【问题标题】:Can't refresh access token of Google OAuth2 with refresh token even the access token is valid即使访问令牌有效,也无法使用刷新令牌刷新 Google OAuth2 的访问令牌
【发布时间】:2021-12-17 02:10:26
【问题描述】:

我的应用程序通过POST https://oauth2.googleapis.com/token API 获取访问令牌和刷新令牌。
响应包含access_tokenexpires_inrefresh_token
我可以使用访问令牌调用 gmail API,例如 GET https://gmail.googleapis.com/gmail/v1/users/me/profile API。

但我无法使用刷新令牌刷新访问令牌。

请求

POST https://oauth2.googleapis.com/token
{
  client_id: <client_id>,
  client_secret: <client_secret>,
  grant_type: "refresh_token",
  refresh_token: <refresh_token>
}

回应

{
  error: "unauthorized_client",
  error_description: "Unauthorized"
}

访问令牌有效但刷新令牌在同一响应中无效,这很奇怪。

并不是每个谷歌账户都会出现这个问题。

谢谢。

【问题讨论】:

标签: oauth google-oauth


【解决方案1】:

unauthorized_client 可能意味着几件事。您的客户端 ID 和客户端密码不匹配。或者您使用的客户端 ID 和客户端密码不是用于创建刷新令牌的客户端 ID 和客户端密码。

但是我可以看到另一个问题,那就是您将数据传递给 post 调用的方式。您应该像 http parms 一样将它们串在一起,它们之间有一个 &。

curl -s \
--request POST \
--data 'client_id=XXXXX&client_secret=XXXXX&refresh_token=XXX&grant_type=refresh_token' \
https://accounts.google.com/o/oauth2/token

How to get a Google access token with CURL.

【讨论】:

    猜你喜欢
    • 2019-06-29
    • 1970-01-01
    • 2014-02-26
    • 2017-04-14
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2020-10-08
    相关资源
    最近更新 更多