我一直在实施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_code“ https://accounts.google.com/o/oauth2/token -v --trace-ascii / dev / stout
响应回来了:
HTTP 400错误请求
{
“错误”:“invalid_grant”,
“error_description”:“无效的代码。”
}
有人可以帮我解决这个问题吗?谢谢!
授权码的使用寿命仅为10分钟,并且只能使用一次。这些检查也是如此:
- 你在10分钟后使用它吗?如果是这样,请在10分钟内使用。
- 你以前用过吗?如果是这样,获取一个新的,然后使用它。
- 您的服务器时间是否与Google OAuth服务器同步?如果没有,请改变你的时间。
授权码的使用寿命仅为10分钟,并且只能使用一次。这些检查也是如此:
- 你在10分钟后使用它吗?如果是这样,请在10分钟内使用。
- 你以前用过吗?如果是这样,获取一个新的,然后使用它。
- 您的服务器时间是否与Google OAuth服务器同步?如果没有,请改变你的时间。
我在用 HTTP://本地主机:8080 作为我的重定向网址,因为我只是在尝试他们的示例。我的json文件内容有:
"redirect_uris": [
"http://localhost:8080"
],
"javascript_origins": [
"http://localhost:8080"
]
在开发者控制台中,我将redirect_uri设置为“HTTP://本地主机:8080“我得到了同样的错误。我把它改成了”HTTP://本地主机:8080 /“然后它开始工作了。
希望这可以帮助!