【发布时间】:2013-07-22 17:24:35
【问题描述】:
通常,Google OAuth2.0 机制运行良好。
- 用户确认访问具有选定范围的 Google 帐户的权限。
- 刷新令牌被检索并保存到长时间存储中。
- 每次需要(如果访问令牌过期)访问令牌都会被检索并用于访问 API。
但有时(迄今为止只有两次超过 6 个月)我遇到了奇怪的行为:
对 Google API 的请求会返回 Invalid Credentials (401) 错误。 刷新访问令牌(使用存储的刷新令牌)没有帮助。
这是我在测试这个问题时得到的一些结构化输出:
+ -------------------------------------------------- ------------------------------------ + | 1.尝试刷新令牌。 | | 2.完成刷新令牌。 | + -------------------------------------------------- ------------------------------------ + |使用权: ************************************************ **** | |刷新:********************************************* | |过期:3600 | |创建时间:2013-07-23 13:12:36 | + -------------------------------------------------- ------------------------------------ +我还尝试通过发送请求来验证“新鲜”访问令牌 https://www.googleapis.com/oauth2/v1/tokeninfo
+ -------------------------------------------------- ------------------------------------ + | 1. 尝试检查令牌。 | | 2.完成检查令牌令牌。 | + -------------------------------------------------- ------------------------------------ + |发给:************.apps.googleusercontent.com | |观众:************.apps.googleusercontent.com | |用户 ID:************ | | expires_in: 3600 | |电子邮件:**********@gmail.com | |验证电子邮件:1 | | access_type: 离线 | |范围:: | + -------------------------------------------------- ------------------------------------ + | https://www.googleapis.com/auth/userinfo.email | | https://www.googleapis.com/auth/userinfo.profile | | https://www.googleapis.com/auth/plus.me | | https://www.googleapis.com/auth/drive | + -------------------------------------------------- ------------------------------------ +但是当我尝试访问驱动器提要时,响应是:
调用 GET https://www.googleapis.com/drive/v2/files 时出错 (401) 凭据无效 领域:全球 原因:authError 消息:无效的凭据 位置类型:标题 地点:授权我们在日历方面也遇到了同样的问题。 所以:
- 令牌之前有效(一切正常)。
- 刷新令牌仍然有效。
- 请求提要时出现“无效凭据”错误。
- 所有其他令牌仍然可以正常工作,这意味着代码有效。
通常当令牌被撤销时,尝试刷新令牌时会返回“invalid_grant”错误。
问题
- 此行为的原因可能是什么?如果刷新令牌被撤销或以其他方式无效,新访问令牌的请求是否会产生错误?
- 有没有办法验证刷新令牌?
【问题讨论】:
-
在多次后续请求后,我遇到了同样奇怪的行为。