为什么oauth 2.0客户端id自动过期



执行计算引擎

api(GET https://compute.googleapis.com/compute/v1/projects/{project}/zones/{zone}/instances/{resourceId}) with oauth 2.0 client id.

我创建了一个OAuth2.0客户端ID,并根据该网站上的步骤获得了access_token和refresh_token。

获取OAuth 2.0访问令牌

刷新访问令牌(离线访问(

我可以用刷新过的access_token执行api。

3天后,再次运行此步骤,

https://developers.google.com/identity/protocols/oauth2/web-server#offline

反应是

json
{   "error": "invalid_grant",   "error_description": "Token has been expired or revoked." }

为什么refresh_token过期了?

refresh_token可以用来获取新访问令牌的令牌。刷新令牌在用户取消访问之前一直有效。同样,只有在向Google授权服务器发出的初始请求中将access_type参数设置为offline时,此字段才会出现在该响应中。

有很多事情会导致刷新令牌过期。

  1. 您使用的是gmail作用域,用户更改了密码
  2. 它已经六个月没用了
  3. 用户已撤销您在其谷歌帐户中的访问权限
  4. 如果用户运行你的应用程序,你会得到一个刷新令牌,如果他们再次运行,你会获得一个不同的刷新令牌,你最多可以这样做50次,并获得新的刷新令牌。它们都将在第50次之后工作,第一个将过期。请确保始终保存最新的刷新令牌
  5. 您的应用程序目前正在测试中,尚未设置为发布,也未通过验证过程

到期的文档链接

最新更新