got 'invalid_grant' in oauth2 SignedJwtAssertionCredentials

google-cloud-datastore, oauth2client

Solution

I fixed it.

SERVICE_ACCOUNT_EMAIL = 'xxxxxx.apps.googleusercontent.com'

the above is client ID not Email, I fixed this and it's working now.

Problem

I am trying to make an oauth2 access_token in a server-to-server JSON API scenario. But it failed with invalid_grant error, please help. ``` 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) ``` and I got ``` 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] ``` https://i.stack.imgur.com/iGGYx.png

Original source