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 ClientID
和 secret
之后,我在 Google OAuth 游乐场 (https://developers.google.com/oauthplayground) 进行了测试。
并注册了上面已经创建的ClientID
和secret
,并应用于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 Origin 和 Authorized 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