Omniauth - установить пользовательский параметр в URL перенаправления - PullRequest
0 голосов
/ 19 декабря 2011

Я использую последнюю (1.0.1) версию Omniauth с рельсами 3.1.3. Прямо сейчас я использую omniauth со стратегией 37signals. Я хотел бы передать пользовательский аргумент (параметр "state") в зависимости от URL-адреса авторизации (например, http://localhost:3000/auth/37signals/5 следует перенаправить на https://launchpad.37signals.com/authorization/new?(...)&state=5

Я пытался установить (временно) фиксированное состояние, например,

provider "37signals", "my_client_id", "my_secret", {state: "5"}

Однако в моем URL-адресе (до сих пор) нет параметра состояния. Есть идеи почему? Можно ли установить этот параметр?

Ответы [ 3 ]

4 голосов
/ 17 апреля 2012

при создании URL вы можете просто добавить состояние в строку запроса, и оно будет доступно и в URL обратного вызова.

user_omniauth_authorize_path(:facebook, :display => 'page', :state=>'123') %>

теперь URL-адрес обратного вызова будет

http://localhost:3000/consumers/auth/facebook/callback?state=123&code=ReallyLongCode#_=_

Теперь в обработчике обратного вызова вы можете обработать состояние

0 голосов
/ 14 декабря 2015

Вы должны использовать опции :params, как в

omniauth_authorize_path(:user, :facebook, var: 'value', var2: 'value2' )

и позже в обратном вызове вы можете получить доступ к request.env['omniauth.params'], чтобы получить хеш!:)

(скопировано с этого ответа )

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

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

может быть, вам нужно взглянуть на это.

https://raw.github.com/tallgreentree/omniauth-37signals/e94a70a08c4535abb91338d8ef73593e143f1e5a/lib/omniauth/strategies/37signals.rb

...