Ruby on rails 使用OmniAuth+的正确方法是什么;在开发Facebook标签时设计?

Ruby on rails 使用OmniAuth+的正确方法是什么;在开发Facebook标签时设计?,ruby-on-rails,facebook,facebook-graph-api,devise,omniauth,Ruby On Rails,Facebook,Facebook Graph Api,Devise,Omniauth,我正在开发一个简单的Facebook应用程序,它将出现在页面的标签中。我正试图找出验证用户的最佳方法。看起来普通的页面重定向是不对的,这就是OmniAuth+Devise如何开箱即用的。如何使用JavaScript SDK的auth对话框实现此功能?是的,您可以使用JavaScript SDK快速实现此功能。按照这里的例子:和正如DMCS所说,FB.getLoginStatus和FB.login将在JS端完成。至于将其与Desive/omniauth连接,假设您使用的是最新的omniauth,其

我正在开发一个简单的Facebook应用程序,它将出现在页面的标签中。我正试图找出验证用户的最佳方法。看起来普通的页面重定向是不对的,这就是OmniAuth+Devise如何开箱即用的。如何使用JavaScript SDK的auth对话框实现此功能?

是的,您可以使用JavaScript SDK快速实现此功能。按照这里的例子:和

正如DMCS所说,
FB.getLoginStatus
FB.login
将在JS端完成。至于将其与Desive/omniauth连接,假设您使用的是最新的omniauth,其中特定于提供商的逻辑已被分解为自己的精华,facebook omniauth Github页面对此进行了如下解释:

客户端流支持解析Facebook放入cookie的签名请求中的授权代码。这意味着您可以像平常一样使用Facebook Javascript SDK,并且在用户在FB.login成功回调中进行身份验证后,只需点击回调端点(/auth/Facebook/callback默认值)


现在这很简单。在FB.login之后,一个简单的window.location.href='/auth/facebook/callback'就可以了

我的问题是如何将这些SDK组件与Desive和OmniAuth集成。一旦JavaScript拥有令牌,然后将其AJAX到运行OmniAuth/Desive代码的服务器。从概念上讲,这就是我的想法。我只是想知道我是否可以使用任何现有的Desive控制器,或者我是否必须重写逻辑。如果遇到未知错误,您可能需要在回调控制器中使用定义
失败
方法。这帮助我找到了一个源于CSRF的错误——我在这份omniauth facebook错误报告的帮助下解决了这个问题