Omniauth - 在重定向网址中设置自定义参数

时间:2011-12-19 09:57:41

标签: ruby-on-rails ruby omniauth

我正在使用最新的(1.0.1)版本的Omniauth和rails 3.1.3。 现在,我正在使用omniauth和37signals策略。我想根据auth url传递自定义参数(“state”参数)(例如http://localhost:3000/auth/37signals/ 5 应重定向到https://launchpad.37signals.com/authorization/new?(...) &安培;状态= 5

我试图设置(暂时)固定状态,类似

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

然而,在我的网址中(仍然)没有状态参数。 有什么想法吗?是否可以设置该参数?

3 个答案:

答案 0 :(得分:4)

创建url时,您只需在Query String中添加状态,它也可以在回调URL中使用。

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

现在回调网址将是

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

现在在回调处理程序中,您可以处理状态

答案 1 :(得分:0)

我认为你不能为网址附加其他参数。服务器端就像指定params一样。

也许你需要看看这个。

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

答案 2 :(得分:0)

您必须使用:params选项,如

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

以及稍后在回调中,您可以访问request.env['omniauth.params']来获取哈希值! :)

(从this answer复制)