为什么我没有从谷歌令牌端点获得刷新令牌?

问题描述 投票:0回答:1

我已经在谷歌开发者控制台上创建了凭据:

  • 一个 API 密钥(将 blogspot API 添加到密钥中)
  • 一个 oauth 客户端(已配置同意屏幕)

oauth 客户端处于测试模式(尚未验证),但添加了一些测试电子邮件。

我可以使用如下所示的授权 URL(客户端 ID、redirect_uri 已更改)成功检索具有授权代码授予流程的访问令牌:

https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&client_id=1234&redirect_uri=https%3A%2F%example.com%3A4430%2Fauth%2Fgoogle%2Fcallba ck&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fblogger&state=abcd1234

最重要的是:

令牌响应如下所示:

{
  "access_token": "***",
  "expires_in": 3108,
  "scope": "https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/blogger openid",
  "token_type": "Bearer",
  "id_token": "***"
}

为什么我没有从令牌端点获取刷新令牌?即使指定了 access_type=offline 。我认为refresh_token只是为第一次登录提供的,所以我尝试从隐身模式登录,但没有帮助。

是因为oauth客户端处于测试模式吗?我尝试查找有关测试模式 oauth 客户端限制的信息,但找不到有关刷新令牌的任何信息。

google-oauth
1个回答
0
投票

我相信你会需要

access_type=offline&prompt=consent 

就像这个答案

正如OP评论的那样

在 golang goth 库中,这对应于: oauth2.AuthCodeURL(state, oauth2.AccessTypeOffline、oauth2.ApprovalForce)。名称 oauth2.ApprovalForce 有点误导,它实际上添加了 提示=同意。

© www.soinside.com 2019 - 2024. All rights reserved.