Невозможно войти с помощью 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 для нескольких приложений.

Основываясь на моем опыте, я даю вам несколько советов.

Некоторые из возможных причин могут быть

  1. Вы добавили ur-адрес url для производства в консоль Google, но, возможно, пропустили URL-адрес обратного вызова для производства.
  2. Проверьте маршруты и посмотрите, добавили ли вы маршрут обратного вызова. Обычно он должен указывать на метод '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

Для получения дополнительной помощи проверьте эту ссылку.

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