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


当前回答

我有同样的问题,在我的本地机器上的端口3000的Reactjs应用程序中授权。 我已经加了lvh。me和http://lvh.me:3000分别为授权来源和授权重定向URL,如下图所示。

注意:您可以为已验证的域添加多个站点。I-e用于本地机器、登台或其他环境

其他回答

没有“一个”解决方案,这似乎很奇怪,也很烦人。 对我来说,http://localhost:8000没有成功,但http://localhost:8000/成功了。

Rails用户(来自omniauth-google-oauth2文档):

修复redirect_uri在Rails中的协议不匹配 只需要根据Rails.env在OmniAuth中设置full_host。 #配置/初始化/ omniauth.rb OmniAuth.config。full_host = Rails.env.production?? 'https://domain.com': 'http://localhost: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

Let me complete @Bazyl's answer: in the message I received, they mentioned the URI "http://localhost:8080/" (which of course, seems an internal google configuration). I changed the authorized URI for that one, "http://localhost:8080/" , and the message didn't appear anymore... And the video got uploaded... The APIS documentation is VERY lame... Every time I have something working with google apis, I simply feel "lucky", but there's a lack of good documentation about it.... :( Yes, I got it working, but I don't yet understand neither why it failed, nor why it worked... There was only ONE place to confirm the URI in the web, and it got copied in the client_secrets.json... I don't get if there's a THIRD place where one should write the same URI... I find nor only the documentation but also the GUI design of Google's api quite lame...

确保检查协议“http://”或“https://”,因为谷歌也检查协议。 最好将两个URL都添加到列表中。