Google OAuth2 - 如何更改expires_in或token_expiry值?

时间:2013-06-12 13:56:34

标签: python oauth-2.0 google-drive-api

我正在尝试扩大'expires_in'的值(来自凭据对象,现在是3600秒),因为我想允许用户长时间使用我的应用程序。我正在使用刷新令牌,但只有在用户经常使用应用程序时它才会刷新。

如果您知道如何更改token_expiry日期 - 我也对该解决方案感兴趣。

感谢您的任何提示。

1 个答案:

答案 0 :(得分:8)

出于安全原因,到期时间很短,无法更改。但是,您可以使用refresh_token扩展用户的授权,而无需与用户交互。基本上,作为对auth代码交换的响应,服务器提供了如下所示的refresh_token:

{
  "access_token" : "ya29.AHES6ZTtm7SuokEB-RGtbBty9IIlNiP9-eNMMQKtXdMP3sfjL1Fc",
  "token_type" : "Bearer",
  "expires_in" : 3600,
  "refresh_token" : "1/HKSmLFXzqP0leUihZp2xUt3-5wkU7Gmu2Os_eBnzw74"
}

当令牌过期时,您所要做的就是使用refresh_token重新授权,而无需用户交互。像这样:

POST /o/oauth2/token HTTP/1.1
Host: accounts.google.com
Content-Type: application/x-www-form-urlencoded

client_id=21302922996.apps.googleusercontent.com&
client_secret=XTHhXh1SlUNgvyWGwDk1EjXB&
refresh_token=1/HKSmLFXzqP0leUihZp2xUt3-5wkU7Gmu2Os_eBnzw74
grant_type=refresh_token

为了使事情更简单,当您使用Python时,如果您使用google-api-python-client中的Credentials class,则甚至不必关心refresh_token。只需使用Credentials.authorize(),它就会根据您的状态自动授权或刷新令牌。