Возможность передавать пользовательские данные на запросы авторизации Facebook от Omniauth. - PullRequest
3 голосов
/ 26 марта 2012

Omniauth ветвь 0-3-стабильный из git: //github.com/intridea/omniauth.git Рельсы 3.0.7

Когда Omniauth перенаправляет пользователя в диалоговое окно авторизации Facebook, вызывая вызов GET для «/ auth / facebook», если этот пользователь нажимает «Отмена» в диалоговом окне авторизации, тогда мы можем запросить обратный вызов

GET "/auth/facebook/callback?error_reason=user_denied&error=access_denied&error_description=The+user+denied+your+request." 

который Omniauth немедленно появляется для перенаправления:

GET "/auth/failure?message=invalid_credentials"

К сожалению, когда это ответ на приложение. приглашение, сгенерированное диалоговым окном запроса FB, нет идентифицирующей информации о том, какой пользователь «отменен» из диалогового окна авторизации. Если бы мы могли отправить некоторую идентифицирующую информацию с запросом Omniauth, мы могли бы позволить себе «запомнить», какой пользователь сделал «Отмена», что помогло бы нам отслеживать явные отказы на серверной части.

Есть ли способ отправить данные вместе с вызовом в "/ auth / facebook", которые просто будут повторены нам в результате вызова "/ auth / facebook / callback"? Это будет похоже на параметр «data» в документации диалога запросов.

Спасибо, Wes

1 Ответ

4 голосов
/ 16 мая 2012

Вы можете пройти через параметр 'state', который будет передан в URL обратного вызова.

например. вы бы позвонили в '/ auth / facebook? state = SOME_INFO'

Затем в действии контроллера, к которому вы направляете '/ auth / facebook / callback', вы получаете так же, как и обычный параметр:

info = params [: state]

Параметр должен называться 'state'. Это упоминается в документации omniauth-facebook в разделе «Опции для каждого запроса». https://github.com/mkdynamic/omniauth-facebook

...