我正在尝试扩大“expires_in”的值(来自凭证对象,现在是 3600 秒),因为我想让用户长时间使用我的应用程序。我正在使用刷新令牌,但只有当用户经常使用应用程序时才会刷新。
如果您知道如何更改 token_expiry 日期 - 我也对该解决方案感兴趣。
谢谢你的任何提示。
我正在尝试扩大“expires_in”的值(来自凭证对象,现在是 3600 秒),因为我想让用户长时间使用我的应用程序。我正在使用刷新令牌,但只有当用户经常使用应用程序时才会刷新。
如果您知道如何更改 token_expiry 日期 - 我也对该解决方案感兴趣。
谢谢你的任何提示。
出于安全原因,有效期很短,不能更改。但是,您可以在不使用 refresh_token 与用户交互的情况下扩展用户的授权。基本上,作为对身份验证代码交换的响应,服务器提供如下所示的 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 类,您甚至不必关心 refresh_token 。只需使用 Credentials.authorize() ,它将根据您的状态自动授权或刷新令牌。