Google OAuth令牌交换会返回invalid_code

时间:2014-06-02 20:44:11

标签: oauth google-oauth

我一直在实施Google网络服务器OAuth流程,但当我尝试使用访问令牌交换授权代码时,它总是会抱怨" invalid_code"。

问题在于:

第1步:

将我们的某个网页重定向到' https://accounts.google.com/o/oauth2/auth?scope=email&redirect_uri=https%3A%2F%2Fmyurl.com%2Fcallback&response_type=code&client_id=some_client_id'

第2步:

重定向发生,谷歌会重定向到我们的网址 https://myurl.com/callback?code=somecode

第3步:

卷曲-X POST - 数据"代码= somecode& client_id = some_client_id& some_client_secret = some_client_secret& redirect_uri = https://myurl.com/callback&grant_type=authorization_code" https://accounts.google.com/o/oauth2/token -v --trace-ascii / dev / stout

响应回来了:

HTTP 400错误请求

{   "错误" :" invalid_grant",   " ERROR_DESCRIPTION" :"代码无效。" }

有人可以帮我解决这个问题吗?谢谢!

2 个答案:

答案 0 :(得分:14)

授权码的有效期仅为10分钟,并且只能使用一次。这些检查也是如此:

  1. 10分钟后你会用它吗?如果是这样,请在10分钟内使用。
  2. 你以前用过吗?如果是这样,获取一个新的,然后使用它。
  3. 您的服务器时间是否与Google OAuth服务器同步?如果没有,请改变你的时间。

答案 1 :(得分:1)

我使用http://localhost:8080作为我的重定向网址,因为我只是在尝试他们的示例。我的json文件内容有:

"redirect_uris": [
  "http://localhost:8080"
],
"javascript_origins": [
  "http://localhost:8080"
]

在开发者控制台中,我将redirect_uri设置为“http://localhost:8080”,我收到同样的错误。我将其更改为“http://localhost:8080/”,然后它开始工作。 (基本上在末尾加上'/'。)

希望这有帮助!