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

why oauth 2.0 client id expired automatically?

执行计算引擎

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。

Obtaining OAuth 2.0 access tokens

Refreshing an access token (offline access)

我可以用刷新的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 A token that you can use to obtain a new access token. Refresh tokens are valid until the user revokes access. Again, this field is only present in this response if you set the access_type parameter to offline in the initial request to Google's authorization server.

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

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

文档 link expiration