Невозможно войти с помощью Google plus, используя omniauth-google-oauth2
Я использую gem "omniauth-google-oauth2" в своем приложении, основанном на spree (ruby-on-rails), для интеграции входа в систему Google plus и нашего сайта. Я получаю очень странную ошибку, она отлично работает в разработке (localhost), но в производстве я получаю эту ошибку
"Авт /google_oauth2/ обратный вызов? Состояние =35ad3c2e3f8327a5b96df7ce7e2439a77b90dfebc41f8463& код =4/ P5L-nug7FU3P8lfnSHNF8Uy_tYXcLyqc0bnABoGo0EI#".
Для интеграции Google Plus я сделал следующее
а.) Я создал приложение WebApplication в консоли разработчиков Google, добавив необходимый источник JavaScript и перенаправив URL-адреса.
б.) Я добавил идентификатор клиента, секретный в моем файле coonfig OmniAuth.config.logger = Rails.logger
Rails.application.config.middleware.use OmniAuth:: Builder do
поставщик:google_oauth2, "мой идентификатор", "секрет"
конец
в.) Я добавил маршрут 'auth/google_oauth2/callback'
Я действительно поражен здесь в течение некоторого времени.
1 ответ
Я сделал google-omniauth-oauth2 для нескольких приложений.
Основываясь на моем опыте, я даю вам несколько советов.
Некоторые из возможных причин могут быть
- Вы добавили ur-адрес url для производства в консоль Google, но, возможно, пропустили URL-адрес обратного вызова для производства.
- Проверьте маршруты и посмотрите, добавили ли вы маршрут обратного вызова. Обычно он должен указывать на метод 'session #create' в вашем SessionsController.
Попробуйте следующее в omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, 'GOOGLE_CLIENT_ID', 'GOOGLE_CLIENT_SECRET
{
:access_type => 'offline',
:prompt => 'consent'
}
Вот мои сессии # создать метод для вашей справки
def create
auth = request.env['omniauth.auth']
@user = User.find_by_email(auth.info.email) || User.create_with_omniauth(auth)
if !@user.country
@user.country = request.location.country
end
@user.update_tokens auth
reset_session
session[:user_id] = @user.id
redirect_to new_video_path, :notice => 'Signed In!'
end
Для получения дополнительной помощи проверьте эту ссылку.