背景

  • 我使用google-api-python-client django_sample获得了access_token到Google API的权限。
  • 要脱机访问,我添加了FLOW.params['access_type'] = 'offline'
  • 存储的credentials_json = credentials.to_json()。它包含一个refresh_token
  • 恢复凭证Credentials.new_from_json(credentials_json)
  • 使用此凭据可通过credentials.authorize(http)获得访问权限。
  • 完美工作=)

  • 问题
  • 我每5分钟执行一次相同的操作。
  • 在每次迭代中,我都存储凭据并打印出来。
  • 1小时45分钟后,“refresh_token”变为空。
  • 此时,代码停止工作=(

  • 我的问题
  • Credentials类是否自动刷新其 token ?
  • 如果不是,我应该在什么时候调用credentials.refresh(http)

  • 谢谢!

    最佳答案

    每次访问 token 过期时,您的刷新 token 都将用于获取新的访问 token 。

    Here google表示访问 token 在过期时会使用刷新 token 自动刷新。

    在我们的应用程序中,当 token 即将到期时,我们将调用credentials.refresh(http)if (credentials.token_expiry - datetime.utcnow()) < timedelta(minutes=refresh_mins): credentials.refresh(httplib2.Http())refresh_mins在我们的代码库中的默认值为15。这是因为访问 token 将在60分钟后过期。我们每45分钟刷新一次。有关此的更多详细信息,请参见here

    关于google-oauth - oauth2client凭据refresh_token变为null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25303126/

    10-10 04:32