Как я могу передать параметры через аутентификацию OAuth, чтобы мой обратный вызов или контроллер могли использовать?
Я использую OAuth для провайдера (LinkedIn).
Я хочу иметь возможность передавать параметры, чтобы, когда кто-то регистрируется, я мог добавить некоторые дополнительные значения во время создания нового пользователя (я использую Devise).
но как мне это сделать?
похоже, что ссылка идет к провайдеру, который затем делает обратный вызов с моим заявлением. Как я могу передать параметры из этой ссылки?
3 ответов
простой способ сделать это-установить параметры в сеансе, а затем получить к ним доступ в обратном вызове.
в вашем действии, которое перенаправляет поставщику:
session[:additional] = additional_data_hash
в действии, которое обрабатывает обратный вызов от поставщика:
data = session.delete(:additional)
использовать delete
чтобы убедиться, что ваш сеанс остается небольшим для последующих запросов.
если добавить GET
стиль params к url аутентификации они будут доступны в обратном вызове через Rails request.env
объект omniauth.params
ключ. Например
если вы войдете через:
link_to "Log In", "/auth/linkedin?foo=bar"
в методе контроллера сопоставляется GET /auth/:provider/callback
вы будете:
request.env['omniauth.params'] == { "foo" => "bar" }
ответ был немного поздно, но я надеюсь, что это помогает кто-то.
обратите внимание, что если вы используете ng-token-auth, вы можете передать параметры в $ auth.аутентификация, и они будут использованы при создании модели пользователя. Например:
$auth.authenticate('github', {params: {favorite_color: 'green'})