在https://code.google.com/apis/console网站上,我已经注册了我的应用程序,设置生成的客户端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/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

这条信息是什么意思,我该如何修复它? 我使用宝石omniauth-google-oauth2。


当前回答

如果你使用谷歌+ javascript按钮,那么你必须使用postmessage而不是实际的URI。我花了几乎一整天的时间才弄清楚,因为谷歌的文档出于某种原因没有清楚地说明它。

其他回答

这个问题的主要原因只会来自chrome和chrome处理WWW和非WWW不同取决于你如何在浏览器中输入你的URL,它从谷歌搜索并直接显示结果,所以发送的重定向URL在不同的情况下是不同的

添加所有可能的组合,你可以找到确切的url从fiddler, 400错误弹出不会给你确切的http和www信息

我也得到这个错误error -400: redirect_uri_mismatch

这不是一个服务器或客户端错误,但你只需要检查你没有在结尾添加/(正斜杠)就可以了

重定向URL列表❌:

https://developers.google.com/oauthplayground/

这样做只✅:

https://developers.google.com/oauthplayground

在我的例子中,重置secret ('reset secret'-按钮)就成功了。

以下是Error: redirect_uri_mismatch问题发生的原因:

重定向URL字段空白在您的谷歌项目。 重定向URL与您的网站不匹配 重要!它将只与工作域,如example.com, book.com等(不与本地主机或AWS LB URL工作)

建议使用域URL

在我的情况下,我必须检查客户端ID类型的web应用程序/已安装的应用程序。

已安装的应用程序:http://localhost[重定向uri] 在这种情况下,localhost就可以工作了

web应用程序:您需要有效的域名[重定向uri:]