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

Другие вопросы по тегам