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

时间:2015-09-12 09:52:36

标签: google-api rebol google-identity

我按照此处的步骤https://developers.google.com/identity/protocols/OAuth2InstalledApp进行操作。我在浏览器中获得了授权码,但获得了**访问错误:协议错误:"服务器错误:HTTP / 1.0 400错误请求"当我生成我的尝试获取令牌的请求时。我将目标更改为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游乐场工作正常,据我所知,我做了同样但没有成功。

我是一个已安装的应用程序,因此我无法向操场提供我的凭据,因为它不信任他们的redirect_uri并且我收到错误。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

尝试更改网址,以使用https://www.googleapis.com/oauth2/v3/tokeninfo?access_token= {accessToken}

从Google获取有关令牌的信息

小心vith版本api