Подтвердить что ты не робот

OmniAuth с использованием ошибки в области стратегии google oauth 2

Я работаю над получением данных календаря из Google с помощью OmniAuth и стратегии google-oauth-2.

Если я ничего не помещаю в поле области, он отлично работает, и я получаю информацию по умолчанию без сообщения auth/failure, и я могу нормально использовать приложение.

Однако в тот момент, когда я добавляю область видимости, как в приведенном ниже примере, я получаю сообщение "auth/failure? message = invalid_credentials".

Rails.application.config.middleware.use OmniAuth::Builder do
    provider :google_oauth2, ENV['TEST_KEY'], ENV['TEST_SECRET'], { :scope => 'https://www.google.com/calendar/feeds/' }
end

Есть ли что-то, что мне не хватает или что-то, что я должен изменить?

4b9b3361

Ответ 1

Быстрое электронное письмо от автора стратегии google-oauth-2 указало на следующее:

Если вы не включаете области профиля, он не может аутентифицироваться.

Добавив userinfo.email и userinfo.profile (вместе с областью календаря) в список :scope, разделенный запятыми, я смог исправить эту проблему.

Пример:

Rails.application.config.middleware.use OmniAuth::Builder do
    provider :google_oauth2, ENV['TEST_KEY'], ENV['TEST_SECRET'], 
           { :scope => 'userinfo.email, userinfo.profile, https://www.googleapis.com/auth/calendar' }
end

Ответ 2

Смешно, это не сработало для меня. Я смог заставить его работать, удалив запятую из области:

Rails.application.config.middleware.use OmniAuth::Builder do
    provider :google_oauth2, ENV['TEST_KEY'], ENV['TEST_SECRET'], 
    { :scope => 'https://www.googleapis.com/auth/docs https://www.googleapis.com/auth/userinfo.profile' }
end