Invalid_grant 尝试获取访问令牌 googleapi 时出错

Invalid_grant error on trying to get access token googleapi

我正在按照步骤 here 进行操作。我在浏览器中得到了 authorization code,但得到的是:

** Access error: protocol error: "Server error: HTTP/1.0 400 Bad Request"

当我生成尝试获取令牌的请求时。我将目标更改为 http,以便我可以在 wireshark 中跟踪 http 请求,并添加了换行:

POST /oauth2/v3/token HTTP/1.0
Accept: */*
Accept-Charset: utf-8
Host: www.googleapis.com
User-Agent: REBOL
Content-Type: application/x-www-form-urlencoded
Content-Length: 251

code=url-encoded-my-authorisation-code&
client_id=my-client-id.apps.googleusercontent.com&
client_secret=my-client-secret&
redirect_uri=urn-blah-blah&
grant_type=authorization_code

我觉得不错。

当我改用 http 时,我收到这条消息

{"error":"internal_failure","error_description":"SSL is required to perform this operation."}

但不幸的是,它没有告诉我我的请求是否已关闭以帮助我处理 ssl 请求。

PS:我又进步了。我从 redirect_uri 中删除了 URL 编码,现在出现 invalid_grant 错误。在此之前,它抱怨缺少 redirect_uri.

的方案

有一次我成功获得了访问令牌,但我无法重现这一点。我看到我的应用程序列在我已授予访问令牌的应用程序中。我删除了我的应用程序并尝试再次授权,但一直失败。

我的时钟是正确的,所以这不是问题所在。 oauth2 游乐场工作正常,据我所知我也在做同样的事情但没有成功。

我的是一个已安装的应用程序,因此我无法向 playground 提供我的凭据作为信任他们的方式 redirect_uri 未提供并且我收到错误消息。

refresh_tokens 似乎有一个限制,虽然从有权访问我的日历的人那里删除应用程序没有用,但从 https://console.developers.google.com/ 中删除我的项目并重新创建它们有效。然后我的代码 运行 成功,没有任何更改。

尝试更改 url 以从 Google 使用 https://www.googleapis.com/oauth2/v3/tokeninfo?access_token={accessToken}

获取有关令牌的信息

注意版本 api