网址似乎正确(昨天上次更新):
文件:
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
...:
但仍然得到同样的错误。
答案 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 'omniauth-oauth2', '~> 1.3.1'
答案 2 :(得分:0)
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分钟就可以了。