Google oauth через devise и omniauth / oauth постоянно запрашивает доступ - PullRequest
5 голосов
/ 03 мая 2011

Я могу использовать devise с omniauth (oauth NOT openid) и конфигурацию devise.rb следующим образом:

config.omniauth :google, KEY, SECRET

, и он правильно перенаправляет в Google запрос разрешения (и возвращает) ...

но, к сожалению, это всегда так.Он должен (я считаю) знать, что я только что разрешил использование Google и должен пропустить это перенаправление на Google после первого раза.Любые предложения о том, как заставить это работать?

Разрешение, о котором я говорю: «Сайт blah.com запрашивает доступ к вашей учетной записи Google для продуктов, перечисленных ниже».Я не хочу, чтобы эта страница всегда появлялась снова.

Ответы [ 6 ]

1 голос
/ 06 марта 2012

Я обновился до последней версии omniauth / devise и использовал гем google_oauth2 (что потрясающе!).

Благодаря этому я смог справиться с проблемой, потому что создатель камня добавил парм впредотвратить повторную авторизацию.

См. здесь

1 голос
/ 10 июня 2011

Вам необходимо самостоятельно осуществлять обратные вызовы - ни Devise, ни Omniauth по умолчанию не предоставляют их вам. Он позаботится о том, чтобы отправить пользователя на конечную точку OAuth и убедиться, что он вернулся, но не будет использовать отправленную информацию и / или войти в систему пользователя.

Это зависит от вас, чтобы сделать эти вещи.

У Devise есть вики-страница о создании простого контроллера обратного вызова: https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview

У Райана Бейтса есть Railscast для выполнения более общего контроллера обратного вызова: http://railscasts.com/episodes/236-omniauth-part-2

И у меня также была запись для универсального контроллера обратного вызова: http://blog.impaled.org/code/2011/2/devise-1-2-with-omniauth-on-rails.html

0 голосов
/ 24 декабря 2014

Вы должны включить «Контакты API» и «Google+ API» через консоль Google API

0 голосов
/ 14 января 2013

У меня была проблема, когда он запрашивал одинаковые разрешения у пользователя при каждом входе в систему. Я решил ее, добавив access_type: "offline" и approval_prompt: "" к моим devise.rb в папке config следующим образом:

config.omniauth :google_oauth2, 'KEYHERE', 'SECRET_HERE', { access_type: "offline", approval_prompt: "", scope: 'userinfo.email,userinfo.profile' }

Область действия выше позволяет мне видеть основную информацию о пользователе и его адресе электронной почты.

Надеюсь, это поможет.

0 голосов
/ 10 октября 2012

С помощью omniauth-google-oauth2 я обнаружил, что вы должны установить

:approval_prompt => ''

в качестве опции в своей строке

provider :google_oauth2, ...

или вместо этого по умолчанию используется значение force, что вызвалота же проблема для меня.

Выведено из прочтения части об утверждении на этой странице: https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview

0 голосов
/ 06 декабря 2011

Проверка: https://github.com/intridea/omniauth/pull/342

Google требует, чтобы мы обменялись на долгосрочный токен авторизации, но я не уверен, что есть чистый способ сделать это с помощью omniauth + devise.

...