在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。


当前回答

2015年7月15日-上周在登录时使用这个脚本工作的登录

<script src="https://apis.google.com/js/platform.js" async defer></script>

停止工作并开始导致Error 400 with Error: redirect_uri_mismatch

然后在DETAILS部分:redirect_uri=storagerelay://…

我把它改成:

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

其他回答

我有前端应用程序和后端api。

从我的后端服务器,我通过点击谷歌api进行测试,并面临这个错误。在我的整个时间里,我想知道为什么我需要给redirect_uri,因为这只是后端,对于前端它是有意义的。

我所做的是给不同的redirect_uri(虽然有效)从服务器(假设这只是占位符,它只需要注册到谷歌),但我的前端url创建令牌代码是不同的。因此,当我在服务器端测试中传递这段代码时(redirect-uri是不同的),我遇到了这个错误。

所以不要犯这个错误。确保您的frontend redirect_uri与您的服务器的谷歌相同,使用它来验证真实性。

检查表:

HTTP还是https? &或&? 后面的斜杠(/)还是打开? (CMD/CTRL)+F,在证书页面中搜索精确匹配。如果 没有找到,那就去找失踪的那个。 等待谷歌刷新它。可能每半小时发生一次,如果你 经常更换,否则可能会留在池中。就我的情况而言,几乎用了半个小时才生效。

就我而言,我补充道

https://websitename.com/sociallogin/social/callback/?hauth.done=Google

在授权重定向uri部分,它为我工作

我的问题是,我在地址栏中有http://localhost:3000/,在console.developers.google.com中有http://127.0.0.1:3000/

如果你正在使用passport js,你正在heroku中部署你的应用程序,你需要在passport策略中添加这个设置proxy: true

passport.use(new GoogleStrategy(
    {
        clientID: keys.googleClientID,
        clientSecret: keys.googleClientSecret,
        callbackURL: '/auth/google/callback',
        proxy: true
    })

或检查您的授权url

必须是https://yourwebsite/auth/google/callback