Google OAuth2 授权 OAuth 令牌错误:redirect_uri_mismatch

Posted

技术标签:

【中文标题】Google OAuth2 授权 OAuth 令牌错误:redirect_uri_mismatch【英文标题】:Google OAuth2 Authorizing OAuth token error: redirect_uri_mismatch 【发布时间】:2013-07-31 00:24:06 【问题描述】:

我正在根据此网页创建和授权 OAuth 令牌:https://code.google.com/p/google-mail-oauth2-tools/wiki/OAuth2DotPyRunThrough

但我收到此错误:redirect_uri_mismatch。

The redirect URI in the request: urn:ietf:wg:oauth:2.0:oob did not match a registered redirect URI
from_login=1
cookie_policy_enforce=false
scope=https://mail.google.com/
response_type=code
access_type=online
redirect_uri=urn:ietf:wg:oauth:2.0:oob
as=-80019291b2cb8ed
display=page
pli=1
client_id=......
authuser=0
hl=en

我认为这可能会有所帮助:Google OAuth 2 authorization - Error: redirect_uri_mismatch

但是当我尝试将重定向 url 注册到我的控制台时,我被告知该 url 无效。

【问题讨论】:

【参考方案1】:

最简单的方法是创建服务帐号。

使用您自己的帐户创建文档并与服务帐户共享。

【讨论】:

【参考方案2】:

我收到此错误,因为我未正确按照已安装应用程序流程此处的步骤进行操作

https://github.com/googleads/googleads-python-lib/wiki

而不是服务器到服务器流

【讨论】:

【参考方案3】:

对于我的原生应用,我尝试了几十种不同的方法。我终于通过使用“redirect_uri=http%3A%2F%2Flocalhost%3A1234”让它工作,其中 1234 是端口号。这在两个请求(授权码和访问令牌)中必须相同。注意百分比编码的使用。

【讨论】:

【参考方案4】:

就我而言,我没有创建 Web 应用程序,而是选择了“其他”: OAuth 客户端 ID > 其他

就是这样。

【讨论】:

【参考方案5】:

为此浪费了 4 或 5 个小时...使用 'postmessage' 作为参数值,而不是真正的重定向 Uri...

$client->setRedirectUri('postmessage');

【讨论】:

我是 java 人,但是将重定向 uri 更改为 postmessage 对我有用。在这个****上花了两个小时。【参考方案6】:

2015July15 - 工作登录开始导致错误 400,Error: redirect_uri_mismatch

i posted a solution 在类似的问题上:将加载脚本更改为

<script src="https://apis.google.com/js/client:platform.js?onload=startApp></script>

【讨论】:

【参考方案7】:

请注意,Token 请求的 'redirect_uri' 值需要与 Authorization 请求的 'redirect_uri' 值相同。

【讨论】:

没错,谢谢!我的问题是接收授权码我使用了urn:ietf:wg:oauth:2.0:oob:autoauto!)但是对于授权我不知道应该使用完全相同的uri【参考方案8】:

对于我的网络应用程序,我通过写作纠正了我的错误

instead of : http://localhost:11472/authorize/
type :      http://localhost/authorize/

【讨论】:

所以我们可以将 localhost 作为 URI,它适用于已发布的网站吗?对于实时/发布的网站,localhost 是如何工作的?我在这里错过了什么吗? 这是唯一对我有用的解决方案。如果您只是在浏览快速入门,那么这就是您需要做的事情!!!!!【参考方案9】:

对于仍然被此问题困扰的任何人,在 Google Cloud Console 中注册您的应用时,您必须将“平台”设置为“本机(Windows Mobile、Blackberry、桌面、设备等)”,否则,它不会让你使用 'urn:ietf:wg:oauth:2.0:oob' 作为重定向 URI。

【讨论】:

【参考方案10】:

以防万一您使用的是 Google+ javascript 按钮(带有网络应用程序),您必须输入 postmessage 而不是实际的 URI。我几乎花了一整天的时间才弄清楚这一点,因为谷歌文档出于某种原因并不能清楚地支持它。

【讨论】:

这节省了我数小时的挖掘时间,谢谢。那里有太多相互冲突的/遗留文档! 同上 - 我只是浪费了大量时间试图弄清楚这一点! 我是 oauth 的新手。我无法理解你建议的这个“postmessage”。它是如何工作的,而不是一个 url。 “显示对话框后”,这就是“postmessage”所指的内容。这个建议救了我! Google+ 平台登录(离线访问)让我在 Node.js 中疯狂! @Drewid 如何发送 POST 消息而不是 URI?【参考方案11】:

当您在 https://code.google.com/apis/console 注册您的应用时,并且 制作客户 ID,您有机会指定一个或多个重定向 URI。您的身份验证 URI 上的 redirect_uri 参数的值必须为 完全匹配其中之一。

【讨论】:

【参考方案12】:

redirect_uri (urn:ietf:wg:oauth:2.0:oob) 仅适用于为已安装的应用程序生成的那些 Google 客户端 ID。您可以转到your console 并创建此类型的新客户端ID。

【讨论】:

是的,你是对的。我通过为已安装的应用程序创建客户端 ID 解决了这个问题。 卫生部。使用为 Web 应用程序创建的一个。我想要我生命的最后 4 小时! 我找不到为已安装的应用程序创建 OAuth2 密钥的选项。 @SatyamSingh 你现在可能已经想通了,但他们不再称它为Installed Applications。您只需选择 iosandroid 或其他。

以上是关于Google OAuth2 授权 OAuth 令牌错误:redirect_uri_mismatch的主要内容,如果未能解决你的问题,请参考以下文章

向 Google 进行身份验证时,从 Spring OAuth2 授权服务器发出 JWT 令牌

Google OAuth 令牌请求返回“invalid_client”:“未授权”

Google OAuth 令牌请求返回“invalid_client”:“未授权”

Google oAuth2 令牌越来越失效

无法在 PHP 中刷新 OAuth2 令牌,授权无效

Google OAuth2:获取令牌 ID