问题 Google OAuth令牌交换会返回invalid_code


我一直在实施Google Web服务器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步:

curl -X POST --data“code = somecode&client_id = some_client_id&some_client_secret = some_client_secret&redirect_uri =https://myurl.com/callback&grant_type=authorization_codehttps://accounts.google.com/o/oauth2/token -v --trace-ascii / dev / stout

响应回来了:

HTTP 400错误请求

{   “错误”:“invalid_grant”,   “error_description”:“无效的代码。” }

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


10344
2018-06-02 20:44


起源



答案:


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

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

12
2018-06-03 01:48



结果是2号。感谢您的回复! - oldmanwiggins


答案:


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

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

12
2018-06-03 01:48



结果是2号。感谢您的回复! - oldmanwiggins


我在用 HTTP://本地主机:8080 作为我的重定向网址,因为我只是在尝试他们的示例。我的json文件内容有:

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

在开发者控制台中,我将redirect_uri设置为“HTTP://本地主机:8080“我得到了同样的错误。我把它改成了”HTTP://本地主机:8080 /“然后它开始工作了。 希望这可以帮助!


0
2018-02-16 10:32