我正在将OAuth用于提供商(LinkedIn)。
我希望能够传递参数,以便当有人注册时,我可以在创建新用户时添加一些额外的值(我正在使用Devise)。
但我该怎么做?
看起来链接转到提供程序,然后提供程序回调我的应用程序。如何从该链接传递参数?
答案 0 :(得分:18)
如果您将GET
样式参数添加到身份验证网址,则可以通过request.env
密钥下的Rails omniauth.params
对象在回调中使用它们。例如
如果您通过以下身份验证:
link_to "Log In", "/auth/linkedin?foo=bar"
在映射到GET /auth/:provider/callback
的控制器方法中,您将拥有:
request.env['omniauth.params'] == { "foo" => "bar" }
答案有点晚了,但我希望它有所帮助。
答案 1 :(得分:3)
执行此操作的简单方法是在会话中设置参数,然后在回调中访问它们。
在重定向到提供商的操作中:
session[:additional] = additional_data_hash
在处理来自提供程序的回调的操作中:
data = session.delete(:additional)
使用delete
确保您的会话对后续请求保持较小。
答案 2 :(得分:-1)
请注意,如果您使用的是ng-token-auth,则可以将参数传递给$auth.authenticate,这些参数将在创建用户模型时使用。 例如:
$auth.authenticate('github', {params: {favorite_color: 'green'})