devise+ Omniauth – 如何传递额外的参数?

我有能力在应用程序加载/用户/身份validation/脸谱连接到Facebook。 我希望能够知道请求来自哪里。 无论是从注册Facebook的用户,还是只想与Facebook连接的现有用户。 根据types,答案是非常不同的。

如何在通过authentication时将一个parameter passing给omniauth。 我试过了:

/users/auth/facebook?connect_action=signup_connect_to_facebook 

但是,connect_action参数并没有达到AuthenticationsController#Create的效果

想法? Thansk

3 Solutions collect form web for “devise+ Omniauth – 如何传递额外的参数?”

你必须使用:params选项,如

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

稍后在callback中,您可以访问request.env['omniauth.params']来获取哈希值! 🙂

如果请求是由应用程序中的不同页面创build的,则可以检查request.env ['omniauth.origin']。 Omniauth会自动保存这个variables。

这里是一个更详细的解释

至于传递自定义参数,我试图做到这一点不成功。 解决方法是将它存储在会话中,然后再转到提供程序,如此处所述。

希望这可以帮助你。

对于Facebook使用“状态”参数,并传递你想要的,但不要忘记编码。

 /users/auth/facebook?state=parameter 

你可以发送参数作为URLforms编码JSON,然后在callback分析它。

  • Rails:validation3列的唯一组合
  • Rails + New Relic:RPM是什么意思?
  • 如何在Rails 3中一次销毁多个对象
  • 在范围内传递参数
  • 在Rails中,如何查看Rails路由添加的所有“path”和“url”方法? (更新:使用Rails控制台)
  • 如何在Rails 3中删除迁移文件
  • 有人可以清楚,简单地向我解释collection_select吗?
  • Rails.cache.clear和rake tmp:cache:clear有什么区别?