我在一个Rails应用程序中使用Omniauth进行Facebook连接。 Facebook身份验证连接正确,但“状态”参数 - 我应该能够通过它传递数据以在回调中检索 - 返回一个我无法破译的字符串。
例如,通过“/ auth / facebook?display = popup& state = 19422”授权
最终返回状态“ecae4f444fb248944083db0623c9a86f3f75dff36006be7e”
知道为什么会这样吗?
答案 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']