Oauth 2.0 谷歌OAuth“;错误";:&引用;无效的“授权”;对为刷新和访问令牌交换一次性身份验证代码的请求的响应

Oauth 2.0 谷歌OAuth“;错误";:&引用;无效的“授权”;对为刷新和访问令牌交换一次性身份验证代码的请求的响应,oauth-2.0,google-signin,google-oauth,Oauth 2.0,Google Signin,Google Oauth,我正在尝试使用以下文档为我们的服务器端应用程序实现Google Signin: 我成功地执行了步骤1-6,并且能够获得一次性身份验证代码。但是,在步骤7中,当我请求将一次性身份验证代码交换为访问令牌时,我得到一个响应: { "error": "invalid_grant", "error_description": "Bad Request" } 我使用CURL尝试了手动HTTP POST请求,也尝试了官方api客户端Python库。响应总是相同的“无效\u授权”” 在请求一次性身份验

我正在尝试使用以下文档为我们的服务器端应用程序实现Google Signin:

我成功地执行了步骤1-6,并且能够获得一次性身份验证代码。但是,在步骤7中,当我请求将一次性身份验证代码交换为访问令牌时,我得到一个响应:

{
  "error": "invalid_grant",
  "error_description": "Bad Request"
}
我使用CURL尝试了手动HTTP POST请求,也尝试了官方api客户端Python库。响应总是相同的“
无效\u授权”

在请求一次性身份验证代码时,我确保请求脱机访问模式

我通过访问并确保我们的应用程序以正确的访问范围列在“具有帐户访问权限的第三方应用程序”中,验证了我获得一次性身份验证代码的用户确实已授予访问权限

你能告诉我如何调试这个吗?不幸的是,这个错误消息没有什么帮助,我已经在堆栈溢出或其他地方尝试了我能找到的关于这个特定错误的一切

更新:我发现了问题所在。显然,一次性代码只适用于一个请求,无论请求是否成功。因此,我尝试获取刷新令牌,因为我的第一次尝试格式错误,请求失败,第一次失败导致一次性代码无效。使用相同代码的任何后续请求,即使格式正确,也会因“无效的授权”而失败。这有点出乎意料,我的印象是“一次”意味着一次成功的尝试。 希望这对其他将在这方面开展工作的人有所帮助。
我使用OAuth请求返回更多信息性错误消息以帮助调试。

我发现了问题所在。显然,一次性代码只适用于一个请求,无论请求是否成功。因此,我尝试获取刷新令牌,因为我的第一次尝试格式错误,请求失败,第一次失败导致一次性代码无效。使用相同代码的任何后续请求,即使格式正确,也会因“无效的授权”而失败。这有点出乎意料,我的印象是“一次”意味着一次成功的尝试。希望这有助于其他人将在这方面的工作。我使用OAuth请求返回更多信息性错误消息以帮助调试。

我们也遇到了同样的问题,并尝试了很多方法,最终问题是客户端在其Google帐户设置中关闭了“不太安全的应用程序访问”

要启用此选项,请执行以下操作:

  • 转到并管理帐户
  • 转到“安全”选项卡
  • 打开不太安全的应用程序访问

  • 我希望这能节省一些时间

    请编辑您的问题并包含您尝试过的代码。curl和python都很好。@DaImTo感谢您的回复,我解决了我的问题,请查看更新。请将您的更新作为答案发布。你的问题和解决方案会帮助别人。我这个周末正好遇到了这个问题。我立刻想到了你的答案。