我有一个使用OAuth2.0作为登录框架的Web应用程序。但是,在用户登录一段时间后,例如1小时,应用程序实际上会给出错误:
“PHP致命错误:未捕获的异常'Google_AuthException',并显示消息'OAuth 2.0访问令牌已过期,并且刷新令牌不可用。对于自动批准的响应,不会返回刷新令牌。'在/home2/iaapro/public_html/test_app/google-api-php-client/src/auth/Google_OAuth2.php:221“
致命错误告诉刷新令牌不存在。当我阅读OAuth2.0 guide by Google时,如果访问类型=“离线”,那么用户将同时收到访问令牌和刷新令牌。
当我收到致命错误时,我只需要清除浏览器缓存和Cookie,然后再次运行。
我看到有人说,只要用户不撤销其帐户的访问权限,访问令牌和刷新令牌就可用。在我的情况下,它在一小时内过期,即使我没有这样做。
我无法在Google上找到有关此内容的更多信息。有人可以向我解释或建议我一些有用的参考吗?
如果我们需要将刷新令牌存储在数据库中,是否有可用的教程?
感谢。
答案 0 :(得分:1)
您的访问令牌在一小时后过期,您需要一个需要存储的刷新令牌来获取另一个有效的访问令牌。要查找当前访问令牌的实时状态,请使用以下URL:
https://accounts.google.com/o/oauth2/revoke?token=YOUR-ACCESS-TOKEN-HERE
如果您收到可怕的错误消息,则表示已过期。
答案 1 :(得分:1)
OAuth身份验证为您提供一个有效一小时的访问令牌。它还将提供一个刷新令牌,可用于在第一次到期时(或以后的会话)获取新的访问令牌。
你应该存储刷新令牌吗?是的,如果您打算重新使用访问权限:每个帐户提供的刷新令牌数量有限制:
https://developers.google.com/accounts/docs/OAuth2?hl=ja#expiration