Authentication Google OAuth 2授权-错误:重定向\u uri\u不匹配
在我已注册应用程序的网站上,将生成的客户端ID:和客户端机密设置到我的应用程序,并尝试登录谷歌。 不幸的是,我收到了错误消息:Authentication Google OAuth 2授权-错误:重定向\u uri\u不匹配,authentication,oauth-2.0,google-signin,Authentication,Oauth 2.0,Google Signin,在我已注册应用程序的网站上,将生成的客户端ID:和客户端机密设置到我的应用程序,并尝试登录谷歌。 不幸的是,我收到了错误消息: Error: redirect_uri_mismatch The redirect URI in the request: http://127.0.0.1:3000/auth/google_oauth2/callback did not match a registered redirect URI scope=https://www.googleapis.com/
Error: redirect_uri_mismatch
The redirect URI in the request: http://127.0.0.1:3000/auth/google_oauth2/callback did not match a registered redirect URI
scope=https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email
response_type=code
redirect_uri=http://127.0.0.1:3000/auth/google_oauth2/callback
access_type=offline
approval_prompt=force
client_id=generated_id
此消息的含义是什么?我如何修复它?
我使用gemomniauth-google-oauth2重定向URI(返回响应的位置)必须在API控制台中注册,错误表明您没有这样做,或者没有正确地这样做
转到项目的控制台并查看API访问。您应该在那里看到您的客户端ID
和客户端机密
,以及重定向URI列表。如果未列出所需的URI,请单击编辑设置并将该URI添加到列表中
编辑:(来自下面一条评价很高的评论)请注意,更新GoogleAPI控制台和出现的更改可能需要一些时间。通常只有几分钟,但有时似乎更长。当您在和注册应用程序时 创建一个客户端ID,您就有机会指定一个或多个重定向 URI。身份验证uri上的
重定向\u uri
参数的值必须为
精确匹配其中一个。如果使用的是Google+javascript按钮,则必须使用
postmessage
,而不是实际的URI。我花了几乎一整天的时间才弄明白这一点,因为谷歌的文档由于某种原因没有清楚地说明这一点。试着做以下检查:
享受:)确保检查协议“http://”或“https://”,因为谷歌也会检查协议。
最好在列表中添加这两个URL。让我完成@Bazyl的回答:在我收到的消息中,他们提到了URI
”http://localhost:8080/“
(当然,这似乎是谷歌内部的配置)。我更改了那个的授权URI,
”http://localhost:8080/“
,消息不再出现。。。视频被上传了。。。API文档非常蹩脚。。。每次我使用google API时,我都会感到“幸运”,但缺少关于它的良好文档(是的,我让它工作了,但我还不明白它为什么失败,也不明白它为什么工作……在web上只有一个地方可以确认URI,它被复制到了client_secrets.json中……我不知道是否还有第三个地方可以写相同的URI……我不仅找到了文档,还找到了谷歌ap的GUI设计我很蹩脚…对于我的web应用程序,我通过编写
instead of : http://localhost:11472/authorize/
type : http://localhost/authorize/
在我的例子中,我必须检查web应用程序/已安装应用程序的客户端ID类型 已安装的应用程序:[重定向URI] 在这种情况下,localhost只起作用
web应用程序:您需要有效的域名[Redirect URI:://p>这似乎很奇怪,也很烦人,因为没有“一个”解决方案。
对我来说,没有成功,但成功了。你需要做的是回到开发人员控制台,进入API&Auth>同意屏幕并填写。具体来说,就是产品名称。2015年7月15日-上周登录时使用此脚本的登录名
<script src="https://apis.google.com/js/platform.js" async defer></script>
任何试图在新控制台中找到重定向URL设置位置的人:API&Auth->Credentials->OAuth 2.0客户端ID->单击链接查找所有重定向URL在我的例子中,它是
www
和非www
URL。实际站点在Google Devel中有www
URL和授权重定向URIoper控制台有非www
URL。因此,重定向URI不匹配。我通过将Google开发者控制台中的授权重定向URI
更新为www
URL解决了这个问题
其他常见的URI不匹配包括:
- 在授权重定向URI中使用
和http://
作为实际URL,反之亦然https://
- 使用尾部斜杠(
)在授权重定向URI中,并且不使用尾部斜杠(http://example.com/
)作为实际URL,反之亦然http://example.com
API管理器
菜单Credentials
菜单。在OAuth 2.0客户端ID
下,您将找到您的客户端名称。在我的例子中,它是Web客户端1
。单击它,将出现一个弹出窗口,您可以编辑授权的Javascript源代码和授权的重定向URI
或http
https
或&
- 尾随斜杠(
)还是打开/
,在凭证页面中搜索精确匹配项。如果 未找到,然后搜索丢失的一个(CMD/CTRL)+F
- 等待谷歌刷新它。如果你需要,可能每半小时就会发生一次 它们经常变化,或者它可能会留在游泳池中。对我来说,这几乎需要半个小时才能生效
- Rails用户(来自文档):
修复Rails中重定向uri的协议不匹配
只需基于Rai在OmniAuth中设置完整的_主机
<script src="https://apis.google.com/js/client:platform.js?onload=startApp"></script>
confg = &oauth2.Config{
RedirectURL: "postmessage",
ClientID: ...,
ClientSecret: ...,
Scopes: ...,
Endpoint: google.Endpoint,
}