我已经在谷歌开发者控制台上创建了凭据:
oauth 客户端处于测试模式(尚未验证),但添加了一些测试电子邮件。
我可以使用如下所示的授权 URL(客户端 ID、redirect_uri 已更改)成功检索具有授权代码授予流程的访问令牌:
最重要的是:
令牌响应如下所示:
{
"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 客户端限制的信息,但找不到有关刷新令牌的任何信息。
我相信你会需要
access_type=offline&prompt=consent
就像这个答案
正如OP评论的那样
在 golang goth 库中,这对应于: oauth2.AuthCodeURL(state, oauth2.AccessTypeOffline、oauth2.ApprovalForce)。名称 oauth2.ApprovalForce 有点误导,它实际上添加了 提示=同意。