使用google_oauth2获取“错误:redirect_uri_mismatch”

时间:2012-11-02 23:35:41

标签: ruby-on-rails omniauth

网址似乎正确(昨天上次更新):

enter image description here

文件:

omniauth.rb:

provider :google_oauth2, 'MY_CLIENT_ID.apps.googleusercontent.com', 'MY_CLIENT_SECRET',
           :scope => 'https://mail.google.com/mail/feed/atom/'

Error: redirect_uri_mismatch
The redirect URI in the request: http://localhost:3000/auth/google_oauth2/callback did not match a registered redirect URI

header.html.erb

<li><%= link_to "Sign in with Google", "auth/google_oauth2" %></li>

routes.rb中:

match '/auth/:provider/callback', to: 'sessions#omniauth_create'

但我得到了这个:

> Error: redirect_uri_mismatch The redirect URI in the request:
> http://localhost:3000/auth/google_oauth2/callback did not match a
> registered redirect URI

(Twitter和Facebook OmniAuth工作正常)

不确定是什么问题。有什么好处可以解决这个问题吗?

修改

我将URI更改为http ...:

enter image description here

但仍然得到同样的错误。

5 个答案:

答案 0 :(得分:22)

看起来请求正在点击http://localhost:3000/auth/google_oauth2/callback,但您指定的与类似模式匹配的重定向URI适用于https。将http://localhost:3000/auth/google_oauth2/callback添加到重定向列表可能会解决该问题。

编辑:另一个可能的修复方法是在相应的重定向URI中包含一个尾随/,在这种情况下似乎有效。

答案 1 :(得分:4)

omniauth-oauth2宝石版1.4 https://github.com/intridea/omniauth-oauth2/issues/81#issuecomment-151038559

是一个相对新鲜的问题

临时修复是在Gemfile

中明确降级该gem
gem 'omniauth-oauth2', '~> 1.3.1'

答案 2 :(得分:0)

enter image description here

FOO

vi config / initializers / omniauth.rb OmniAuth.config.full_host = 'https://localhost:3000' Rails.application.config.middleware.use OmniAuth::Builder do provider :google_oauth2, 'google_client_id', 'google_client_secret' end

答案 3 :(得分:0)

分享一个非常简单的复制粘贴解决方案,对我有用。

我将我在代码中指定的内容复制为redirectUri,即"redirect_uri": "http://127.0.0.1:3001/",并将此value的{​​{1}}粘贴到 Google设置中要求授权重定向URI 。这样我就确保两个参数都相同。

如果计算了key,我会url将其复制并从控制台窗口复制,然后将其粘贴到谷歌设置中。

答案 4 :(得分:0)

我尝试了以上所有但不适合我。最后在我的错误消息中注意到我的回电略有不同。我在localhost:3000和auth之间有一个用户。不太清楚为什么。

http://localhost:3000/users/auth/google_oauth2/callback

更改了它,等了30分钟就可以了。