Получение "Ошибка: 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 минут, и он сработал.