我有相同的代码,具有相同的 p12 文件(检查了 md5 和)、相同的 account_email 和相同的范围,可以在多台计算机上工作,但不能在任何工作计算机上的 Docker 容器中工作。我的代码片段如下:
with open(self.pkcs12_file_path, 'rb') as f:
key = f.read()
scope = ['https://www.googleapis.com/auth/bigquery',
'https://www.googleapis.com/auth/cloud-platform']
credentials = SignedJwtAssertionCredentials(self.account_email,
key, scope)
http = httplib2.Http()
self.http = credentials.authorize(self.http)
service = discovery.build('bigquery', 'v2', http=self.http)
每当我在 Docker 容器中尝试这个时,我都会得到oauth2client.client.AccessTokenRefreshError: invalid_grant
at the discovery.build
线。我认为这可能与需要公开端口有关,但不知道我需要公开哪些端口,或者这是否是实际的问题。有人有主意吗?
这听起来像是一个时钟问题。 Google 的 OAuth 访问令牌的有效期为一小时(Google 刷新令牌永久有效,您可以使用它们来检索新的访问令牌)。您能否验证 Docker 容器的时钟是否与主机同步(或设置为您期望的时区?)。
See: docker容器会自动与主机同步时间吗? https://stackoverflow.com/questions/22800624/will-docker-container-auto-sync-time-with-the-host-machine
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)