1. 用户确认选择的范围以访问Google帐户的权限。 2. 检索并保存刷新令牌以进行长期存储。 3. 每次需要(如果访问令牌过期)检索访问令牌并用于访问API。
但有时候(迄今为止只有两次超过6个月),我遇到了奇怪的行为:
对Google API的请求返回无效凭据(401)错误。使用存储的刷新令牌刷新访问令牌无法解决问题。
以下是在测试此问题时获得的一些结构化输出:
我也尝试通过向https://www.googleapis.com/oauth2/v1/tokeninfo发送请求来验证“新鲜”的访问令牌。
+ ------------------------------------------------------------------------- + | 1. 尝试检查令牌。 | | 2. 完成检查令牌。 | + ------------------------------------------------------------------------- + | issued_to: ************.apps.googleusercontent.com | | audience: ************.apps.googleusercontent.com | | user_id: ************ | | expires_in: 3600 | | email: **********@gmail.com | | verified_email: 1 | | access_type: offline | | scopes:: | + ------------------------------------------------------------------------- + | 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”错误会在尝试刷新令牌时返回。 问题
- 令牌之前是有效的(一切正常)。
- 刷新令牌仍然有效。
- 请求反应为“凭据无效”错误。
- 所有其他令牌仍然很好地工作,这意味着代码是有效的。
- 这种行为的原因是什么?如果刷新令牌被撤销或以其他方式无效,请求新访问令牌是否应该产生错误?
- 有没有办法验证刷新令牌?