我正在尝试扩大'expires_in'的值(来自凭据对象,现在是3600秒),因为我想允许用户长时间使用我的应用程序。我正在使用刷新令牌,但只有在用户经常使用应用程序时它才会刷新。
如果您知道如何更改token_expiry日期 - 我也对该解决方案感兴趣。
感谢您的任何提示。
答案 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(),它就会根据您的状态自动授权或刷新令牌。