在oauth2 SignedJwtAssertionCredentials中得到'invalid_grant'

Pah*_*ieh 14 oauth2client google-cloud-datastore

我试图在服务器到服务器JSON API方案中创建oauth2 access_token.但它失败了invalid_grant错误,请帮忙.

from oauth2client.client import SignedJwtAssertionCredentials

KEY_FILE = 'xxxxxxxxxxxx-privatekey.p12'

with open(KEY_FILE, 'r') as fd:
    key = fd.read()

SERVICE_ACCOUNT_EMAIL = 'xxxxxx.apps.googleusercontent.com'

credentials = SignedJwtAssertionCredentials(SERVICE_ACCOUNT_EMAIL, key,
      scope="https://www.googleapis.com/auth/datastore https://www.googleapis.com/auth/userinfo.email",
      token_uri='https://accounts.google.com/o/oauth2/token')


assertion = credentials._generate_assertion()

h = httplib2.Http()
credentials._do_refresh_request(h.request)
Run Code Online (Sandbox Code Playgroud)

我得到了

Traceback (most recent call last):
  File "/Users/pahud/Projects/oauth2client/x.py", line 24, in <module>
    credentials._do_refresh_request(h.request)
  File "/Users/pahud/Projects/oauth2client/oauth2client/client.py", line 710, in _do_refresh_request
    raise AccessTokenRefreshError(error_msg)
oauth2client.client.AccessTokenRefreshError: invalid_grant
[Finished in 0.7s with exit code 1]
Run Code Online (Sandbox Code Playgroud)

http://i.stack.imgur.com/iGGYx.png

Pah*_*ieh 12

我修好了它.

SERVICE_ACCOUNT_EMAIL = 'xxxxxx.apps.googleusercontent.com'
Run Code Online (Sandbox Code Playgroud)

以上是客户端ID而不是电子邮件,我修复此问题,现在正在运行.