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