Facebook返回随机字符串而不是“州”参数

时间:2013-12-13 15:17:26

标签: ruby-on-rails facebook gem omniauth

我在一个Rails应用程序中使用Omniauth进行Facebook连接。 Facebook身份验证连接正确,但“状态”参数 - 我应该能够通过它传递数据以在回调中检索 - 返回一个我无法破译的字符串。

例如,通过“/ auth / facebook?display = popup& state = 19422”授权

最终返回状态“ecae4f444fb248944083db0623c9a86f3f75dff36006be7e”

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

state param不应该用于传递数据。该参数仅用于停止CSRF vulnerabilities。随机生成的字符串正在后台使用,以防止这些类型的攻击。<​​/ p>

您只需使用任何其他参数即可传递自定义数据。 OmniAuth已经足够友好,可以在会议中坚持您在请求中发送的任何额外的参数。

所以不要用

传递数据
request_url?state=data

并通过

获取
data = params[:state]

您可以使用

传递它
request_url?whatever=data

并通过

获取
data = request.env['omniauth.params']['whatever']

您甚至可以省略请求并获取数据:

data = env['omniauth.params']['whatever']