oauth - Google OAuth token 交换返回 invalid_code

标签 oauth google-oauth

我一直在实现 Google 网络服务器 OAuth 流程,但是当我尝试用访问 token 交换授权代码时,它总是提示“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 错误请求

{ “错误”:“无效的授权”, "error_description": "代码无效。" }

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

最佳答案

授权码的有效期只有10分钟,且只能使用一次。因此,请执行以下检查:

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

关于oauth - Google OAuth token 交换返回 invalid_code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24002970/

相关文章:

oauth-2.0 - Gmail API 返回 403 错误代码和 "Delegation denied for <user email>"

OAuth2 - 如何同时从多个浏览器保持登录状态?

google-cloud-platform - 如何从 console.cloud.google 的 OAuth 同意屏幕中删除应用程序

ruby-on-rails - 如何在 Ruby on Rails 服务器上验证从 Android 发送的 Google token ID?

Firebase:AngularFire 中的本地开发和测试

authentication - 使用oauth的netsuite中的授权问题

java - 将 OAuth 与 Scribe-Java 和 Google Apps 结合使用

oauth - 带有 Oauth 和 Office365 的 JavaMail

javascript - Google Apps 脚本 OAuth - returnURL 以更新附加组件

node.js - Passport .js : Are UID unique?