获取访问令牌RefreshError:Google API for service帐户中的invalid_grant

时间:2013-08-21 02:35:14

标签: google-tasks-api

我正在关注这个例子

https://code.google.com/p/google-api-python-client/source/browse/samples/service_account/tasks.py

  credentials = SignedJwtAssertionCredentials(
      '141491975384@developer.gserviceaccount.com',
      key,
      scope='https://www.googleapis.com/auth/tasks')
  http = httplib2.Http()
  http = credentials.authorize(http)

  service = build("tasks", "v1", http=http)

  # List all the tasklists for the account.
  lists = service.tasklists().list().execute(http=http)
  pprint.pprint(lists)

问题是,它有时会工作,我将列表作为JSON,并且在运行程序几次后我得到错误

  File "/usr/local/lib/python2.7/site-packages/oauth2client/client.py", line 710, in _do_refresh_request
    raise AccessTokenRefreshError(error_msg)
oauth2client.client.AccessTokenRefreshError: invalid_grant

3 个答案:

答案 0 :(得分:0)

我正在使用Google云端硬盘,但发现了同样的错误。在Issue 160中有一份报告,说明在本地计算机上设置适当的时间。自从我升级到Mac Mavericks后,我发现我需要不断更新系统时间。我收到了您报告的错误,将我的系统时间设置回当前状态并消除了错误。

答案 1 :(得分:0)

您是在VM或沙盒环境中运行此代码吗?如果是这样,可能只是因为您的VM时钟未与主机同步。查看对类似问题的回复here

我遇到了同样(令人沮丧)的问题,发现只是重新启动我的VM(确保时间与主机同步(或至少设置为本地时区)解决了问题。

答案 2 :(得分:0)

Oauth服务高度依赖于时间,确保您的客户端使用NTP或其他时间同步机制。

用curl -I https://docs.google.com/测试; date -u

您应该看到相同的日期:(或几秒钟内)才能使用