Ruby on rails 如何通过OAuth身份验证传递参数,以便回调或控制器可以使用?

Ruby on rails 如何通过OAuth身份验证传递参数,以便回调或控制器可以使用?,ruby-on-rails,oauth,devise,omniauth,Ruby On Rails,Oauth,Devise,Omniauth,我正在将OAuth用于提供商(LinkedIn) 我希望能够传递参数,以便当有人注册时,我可以在创建新用户时添加一些附加值(我正在使用Desive) 但是我该怎么做呢 看起来该链接指向提供程序,然后该提供程序对我的应用程序进行回调。如何从该链接传递参数?简单的方法是在会话中设置参数,然后在回调中访问它们 在重定向到提供程序的操作中: session[:additional] = additional_data_hash data = session.delete(:additional) 在

我正在将OAuth用于提供商(LinkedIn)

我希望能够传递参数,以便当有人注册时,我可以在创建新用户时添加一些附加值(我正在使用Desive)

但是我该怎么做呢


看起来该链接指向提供程序,然后该提供程序对我的应用程序进行回调。如何从该链接传递参数?

简单的方法是在会话中设置参数,然后在回调中访问它们

在重定向到提供程序的操作中:

session[:additional] = additional_data_hash
data = session.delete(:additional)
在处理来自提供程序的回调的操作中:

session[:additional] = additional_data_hash
data = session.delete(:additional)

使用
delete
确保会话对于后续请求保持较小。

如果向身份验证url添加
GET
样式参数,则它们将通过
omniauth.params
键下的Rails
request.env
对象在回调中可用。比如说

如果您通过以下方式进行身份验证:

link_to "Log In", "/auth/linkedin?foo=bar"
在映射到
GET/auth/:provider/callback
的控制器方法中,您将拥有:

request.env['omniauth.params'] == { "foo" => "bar" }

回答有点晚,但我希望它能帮助别人。

请注意,如果您使用的是ng token auth,那么您可以将参数传递给,这些参数将在创建用户模型时使用。 例如:


$auth.authenticate('github',{params:{favorite_color:'green'})

我想重定向的动作是在设计中……那么我该如何处理呢?好吧,所以我想我把它添加为一个会话,让它去回拨,然后我使用它……如果有人能正确回答这个问题,我会非常喜欢。会话是围绕实际解决的问题进行的一次破解。问题是,这个酒吧每次都会是新的,因为o将是相同的,这怎么可能?我希望bar是dynamicI试图将其用于NetDocuments身份验证,但它导致了无效的\u grant响应。