Google OAuth 2 redirect_uri_mismatch - приложение OmniAuth Rails
У меня проблема с аутентификацией учетной записи Google в моем приложении Rails.
Я использую omniauth-google-oauth2 gem с помощью Devise.
Всегда получайте эту ошибку, когда я пытаюсь получить доступ к учетной записи google:
Error: redirect_uri_mismatch
The redirect URI in the request: http://localhost:3000/users/auth/google_oauth2/callback did not match a registered redirect URI
Я уверен, что зарегистрированный URL-адрес перенаправления в моем приложении консоли Google правильный и идентичный запрошенному, так же:
![enter image description here]()
Итак, какая главная проблема здесь?
Ответы
Ответ 1
попробуйте следующим образом:
add require "omniauth-google-oauth2" to devise.rb in config/initializers folder
add http://localhost:3000/users/auth/google_oauth2/callback
в URL-адрес переадресации в консоли Google API https://console.developers.google.com
перезапустить сервер
Ответ 2
Мое решение состоит в том, чтобы принудительно перенаправить redirect_url на обе стадии (код/токен), devise.rb initializer:
CALLBACK_URL = 'https://SOMESERVER/users/auth/google_oauth2/callback'
Devise.setup do |config|
config.omniauth :google_oauth2,
"SOMECLIENTID.apps.googleusercontent.com",
"SOMEKEY",
{
:client_options => {:ssl => {:ca_file => 'C:\Ruby21\cacert.pem'}},
:provider_ignores_state => true,
:prompt => "select_account",
:redirect_uri => CALLBACK_URL,
setup: (lambda do |env|
request = Rack::Request.new(env)
env['omniauth.strategy'].options['token_params'] = {:redirect_uri => CALLBACK_URL}
end)
}
end
здесь обсуждается проблема: https://github.com/zquestz/omniauth-google-oauth2/issues/181
Ответ 3
Будьте осторожны с тем, какой идентификатор клиента вы устанавливаете.
Google API предоставляет два:
Идентификатор клиента для Google Compute и App Engine
Идентификатор клиента для веб-приложений
Вам нужно использовать идентификатор клиента для веб-приложений
Ответ 4
Убедитесь, что вы установили имя продукта и адрес электронной почты через ссылку "Согласие".
В документации omniauth-google-oauth2 вам необходимо:
Перейдите к 'https://console.developers.google.com'
Выберите свой проект.
Нажмите "API и auth"
Убедитесь, что включены "API-интерфейс" Контакты "и" Google+ API ".
Перейдите на экран "Согласие" и укажите "ИМЯ ПРОДУКТА"
Подождите 10 минут, чтобы изменения вступили в силу.
У меня была одна и та же проблема, я сделал обновления, ждал 10 минут, все равно ничего, пошел на обед, потом начал работать. Угадайте, что терпение было частью ключа к успеху на этом.