Ответ 1
Вы должны использовать параметры :params
, как в
omniauth_authorize_path(:user, :facebook, var: 'value', var2: 'value2' )
а затем в обратном вызове вы можете получить доступ к request.env['omniauth.params']
, чтобы получить хэш!:)
У меня есть возможность в приложении загрузить /users/auth/facebook для подключения к facebook. Я хочу знать, откуда пришел запрос. Был ли он от пользователя, который регистрируется в facebook, или существующего пользователя, который просто хочет подключиться к facebook. Основываясь на типе, ответы очень разные.
Как я могу передать параметр во время проверки на omniauth. Я пробовал:
/users/auth/facebook?connect_action=signup_connect_to_facebook
Но этот параметр connection_action не сделал этого, когда он нажал кнопку AuthenticationsController # Create
Идеи? Thansk
Вы должны использовать параметры :params
, как в
omniauth_authorize_path(:user, :facebook, var: 'value', var2: 'value2' )
а затем в обратном вызове вы можете получить доступ к request.env['omniauth.params']
, чтобы получить хэш!:)
Если запрос сделан с разных страниц вашего приложения, вы можете проверить request.env ['omniauth.origin']. Omniauth автоматически сохраняет эту переменную.
Здесь - более подробное объяснение
Что касается передачи пользовательских параметров, я попытался сделать это безуспешно. Обходной путь заключается в том, чтобы сохранить его в сеансе перед тем, как обратиться к провайдеру, как описано здесь.
Надеюсь, это поможет вам.
Для facebook используйте параметр "state" и передайте то, что хотите, но не забывайте кодировку.
/users/auth/facebook?state=parameter
Вы можете отправить этот параметр в виде кодировки json, а затем в обратном вызове проанализировать его.