Получение "Ошибка: redirect_uri_mismatch" с google_oauth2
URL-адреса кажутся правильными (Последнее их обновление вчера):
Файлы тоже:
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
...:
Но все равно получаю ту же ошибку.
5 ответов
Похоже, запрос попал http://localhost:3000/auth/google_oauth2/callback
, но указанный вами URI перенаправления, соответствующий аналогичному шаблону, предназначен для https
, Добавление http://localhost:3000/auth/google_oauth2/callback
в ваш список перенаправлений может решить эту проблему.
РЕДАКТИРОВАТЬ: еще одно потенциальное решение включает в себя трейлинг /
в соответствующих URI перенаправления, которые, как оказалось, работают в этом случае.
Там относительно свежая проблема с omniauth-oauth2
версия драгоценного камня 1.4
https://github.com/intridea/omniauth-oauth2/issues/81
Временное исправление заключается в явном понижении этого драгоценного камня в Gemfile
gem 'omniauth-oauth2', '~> 1.3.1'
Поделиться очень простым решением для копирования и вставки, которое сработало для меня.
Я скопировал все, что я указал в своем коде как redirectUri
т.е. "redirect_uri": "http://127.0.0.1:3001/"
и вставил value
этого key
внутри настроек Google, которые запрашивают URI авторизованного перенаправления. Таким образом, я гарантирую, что оба параметра одинаковы.
Если url
был вычислен, я бы console.log()
это и скопируйте это из окна консоли прежде, чем вставить это для настроек Google.
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
Я попробовал все вышеперечисленное, но у меня не получилось. В конце концов, заметил в моем сообщении об ошибке, мой перезвон был немного другим. У меня были пользователи между localhost:3000 и auth. Не совсем уверен, почему.
http://localhost:3000/users/auth/google_oauth2/callback
Поменял, подождал 30 минут и все заработало.