5

背景

  1. 我使用google-api-python-client django_sample获得了 Google API 的 access_token 。
  2. 为了离线访问,我添加了FLOW.params['access_type'] = 'offline'.
  3. 存储credentials_json = credentials.to_json()。它包含一个refresh_token.
  4. 恢复了凭据Credentials.new_from_json(credentials_json)
  5. 使用此凭据获得访问权限credentials.authorize(http)
  6. 工作完美=)

问题

  1. 我每5分钟做一次同样的事情。
  2. 在每次迭代中,我都存储了凭据并打印了它。
  3. 1 小时 45 分钟后,“refresh_token”变为空。
  4. 此时代码停止工作=(

我的问题

  1. Credentials类会自动刷新它的令牌吗?
  2. 如果没有,我应该在什么时候打电话credentials.refresh(http)

谢谢!

4

1 回答 1

7

每次访问令牌过期时,您的刷新令牌都会用于获取新的访问令牌。

这里谷歌说访问令牌在过期时使用刷新令牌自动刷新。

在我们的应用程序中,我们credentials.refresh(http)在令牌即将到期时调用

if (credentials.token_expiry - datetime.utcnow()) < timedelta(minutes=refresh_mins): credentials.refresh(httplib2.Http())

refresh_mins在我们的代码库中默认值为 15。这是因为访问令牌在 60 分钟后过期。我们每 45 分钟刷新一次。可以在此处找到有关此的更多详细信息

于 2014-09-22T06:17:52.897 回答