OmniAuth с использованием сбоя области действия стратегии oauth 2 Google

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

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

Однако в тот момент, когда я добавляю область действия, как в приведенном ниже примере, я получаю сообщение «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

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


person y4ku    schedule 16.12.2011    source источник
comment
Omniauth только для аутентификации. Как вы получаете данные календаря после получения токенов аутентификации?   -  person Sharj    schedule 20.03.2012


Ответы (2)


В коротком электронном письме от автора стратегии 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
person y4ku    schedule 19.12.2011
comment
Странно, я продолжаю получать эту ошибку: Some requested scopes were invalid. {valid=[https://www.googleapis.com/auth/calendar, https://www.googleapis.com/auth/userinfo.email], invalid=[https://www.googleapis.com/auth/]} Вы столкнулись с этим? - person sent-hil; 21.12.2011
comment
Можете ли вы вставить свое поле :scope? - person y4ku; 28.12.2011
comment
Фу. Наконец-то это тоже заработало, за исключением того, что я все еще использовал запятые, но без пробелов после запятых. Если вы посмотрите на источник (github.com/zquestz/omniauth-google-oauth2/blob/master/lib/), он разделяет строку запятыми. Образец, который работал: provider :google_oauth2, google_key, google_secret, {scope: "https://www.googleapis.com/auth/userinfo.email,https://www.googleapis.com/auth/userinfo.profile,https://www.googleapis.com/auth/analytics.readonly", access_type: 'offline', approval_prompt: ''} - person fholgado; 09.06.2012
comment
вы, конечно, ГЕНИЙ. Может быть, было бы неплохо добавить это для людей, занимающихся разработкой;) календарь.только для чтения' - person Mike Silvis; 22.06.2012
comment
Надеемся, что информация будет обновлена. - person davetapley; 27.01.2013
comment
@fholgado спасибо, сэр, это то самое место. Им действительно нужно исправить свои документы. - person Niall Paterson; 16.04.2013

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

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
person Andre Goncalves    schedule 28.12.2011
comment
Это то, что сработало и для меня. Удалите запятые и используйте полные URL-адреса. Спасибо. - person rmw; 14.01.2012