Google OAuth 2.0 redirect_uri_mismatch 错误

Posted

技术标签:

【中文标题】Google OAuth 2.0 redirect_uri_mismatch 错误【英文标题】:Google OAuth 2.0 redirect_uri_mismatch error 【发布时间】:2014-02-09 02:07:12 【问题描述】:

    我在 Google Developer 控制台中创建了 Google OAuth 2.0 ClientIDsecret

    之后,我在 Google OAuth 游乐场 (https://developers.google.com/oauthplayground) 进行了测试。 并注册了上面已经创建的ClientIDsecret,并应用于Google OAuth 2.0 Playground设置菜单。

    有人说创建ClientID/secret后需要一些时间进行测试。所以两天后我尝试在相同的条件下进行测试,但错误是相同的redirect_uri_mismatch

我该如何解决这个问题?

【问题讨论】:

好吧,他们匹配吗?一个字符一个字符,包括协议和斜杠?有时 API 控制台需要启动,因此请尝试进行更改(例如添加第二个重定向 URL) 还要检查子域。我错过了一个 www。 【参考方案1】:

只要在你的 uri 末尾有一个“/”而在你的代码末尾没有相同的“/”就会把它扔掉。

【讨论】:

【参考方案2】:

您的site URL 和开发者控制台中的Authorized redirect URIs 应该完全匹配。

如果一个 URL 具有 www (http://www.example.com) 而另一个 URL 是 non-www (http://example.com),则会发生这种错误。

其他常见的 URI 不匹配是:

在授权重定向 URI 中使用 http://,在实际 URL 中使用 https://,反之亦然 在授权重定向 URI 中使用斜杠 (http://example.com/) 而不是使用斜杠 (http://example.com) 作为实际 URL,反之亦然

这是在 Google Developer Console 中更新授权重定向 URI 的分步过程(带有屏幕截图)(适用于像我这样难以访问该页面的人)。

    转到https://console.developers.google.com

    选择您的项目

    点击菜单图标

    点击API Manager菜单

    点击Credentials 菜单。在OAuth 2.0 Client IDs 下,您会找到您的客户名称。就我而言,它是Web Client 1。单击它,将出现一个弹出窗口,您可以在其中编辑 Authorized Javascript OriginAuthorized redirect URIs

这是一篇关于 creating project and client ID 的 Google 文章。

【讨论】:

【参考方案3】:

它应该与您在 console.developers.com 中给出的完全匹配。

就我而言,我错过了网址中的 www。

例如:你给了http://www.google.com,但在console.developers.com你给了http://google.com

它仍然会抛出错误。所以应该是完全匹配的。

【讨论】:

【参考方案4】:

必须在Google APIs console 中注册重定向 URI(OAuth 响应返回的位置),错误表明您没有这样做,或者没有正确完成。

转到您的项目的控制台并在 API 访问下查看。您应该在那里看到您的客户端 ID 和密码,以及重定向 URI 列表。如果未列出所需的 URI,请单击编辑设置并将 URI 添加到列表中。

【讨论】:

在新的 Google Cloud 控制台中,我没有看到任何重定向 URL,甚至在一个地方添加它们 APIs & auth >> 凭证。在 OAuth 下,单击编辑设置。第二个字段是重定向 URI。 @derpface 最新控制台上没有“编辑设置”(2015 年 9 月) @Dan OAuth 2.0 客户端 ID 的名称是一个链接。单击它,它会将您带到编辑屏幕。让您想知道 Google 的 UI 人员是否听说过最不意外的原则。 (2015 年 9 月) 转到APIs & auth > Credentials 然后Add credentials > OAuth 2.0 Client ID 然后专门选择Web application 然后它应该有Authorized redirect URIs 的位置。我的旧型号是other,没有Authorized redirect URIs【参考方案5】:

我一直收到同样的错误,直到我意识到我需要将“signin-google”放在 Google API 控制台中重定向设置的末尾,就像这样(即,不是 http://www.example.org/api):

http://www.example.org/api/signin-google

【讨论】:

【参考方案6】:

(Magento 1.*)如果您使用 inchoo Social Connect Magento 扩展,则:

在您的 Google 应用中设置以下网址(OAuth 2.0 客户端 ID):
    授权重定向 URI:http://www.example.com/socialconnect/google/connect/
    授权的 javascript 来源:http://www.example.com

别忘了用你的域名替换http://www.example.com

【讨论】:

【参考方案7】:

请确保在您的 google-client-api 中,这些字段中的凭据值与您从 Google API console 获得的值匹配:

$client->setClientId('xxx.apps.googleusercontent.com');
$client->setClientSecret('xxx');
$client->setRedirectUri('http://example.com/oauth2callback');
$client->setDeveloperKey('xx');

当 setRedirectUri 的值与您在 Google API 控制台中设置的值不同时,可能会发生这种情况。

【讨论】:

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

Google Gmail API OAuth 2.0 错误 400:redirect_uri_mismatch

Google OAuth 2.0 得到错误 400:redirect_uri_mismatch,ASP.net core 3.1

Google OAuth 2.0 invalid_request,缺少方案

Google OAuth2 授权 OAuth 令牌错误:redirect_uri_mismatch

Google OAuth2 redirect_uri_mismatch 问题

使用 omniauth-google-oauth2 redirect_uri_mismatch 进行身份验证