与omniauth-facebook的Rails Facebook登录错误 - OmniAuth :: Strategies :: OAuth2 :: CallbackError

pab*_*rti 8 facebook ruby-on-rails oauth-2.0 omniauth

我想在Rails 3.2.9中使用omniauth-facebook登录Facebook; 我已经按照http://railscasts.com/episodes/360-facebook-authentication中的Ryan Bates的步骤进行操作,在这一刻我有相同的代码.

如果我尝试登录没有Javascript它可以工作(我需要Facebook,我授予权限,并让我成功回到应用程序),但如果我尝试使用Javascript(对于Facebook弹出窗口)它最初显示弹出窗口登录,但然后进行重定向并抛出此错误(不要求权限):

Started GET "/auth/facebook/callback" for 127.0.0.1 at 2012-11-16 15:16:03 -0600
(facebook) Callback phase initiated.
(facebook) Authentication failure! invalid_credentials: OmniAuth::Strategies::OAuth2::CallbackError, OmniAuth::Strategies::OAuth2::CallbackError

OmniAuth::Strategies::OAuth2::CallbackError (OmniAuth::Strategies::OAuth2::CallbackError)
Run Code Online (Sandbox Code Playgroud)

这是一个非常常见的错误; 我做了研究并尝试了所有的解决方案(大多数是几个月前),但都没有.这是我尝试过的:

  1. 在Facebook中检查沙箱是禁用的(我已经等了几个小时进行传播)
  2. 检查站点URL http://localhost:3000/
  3. 检查应用程序ID和应用程序密钥
  4. omn​​iauth-facebook gem 降级为1.4,并将此错误抛给我:omniauth-facebook must pass either a代码parameter or a signed request (viasigned_request parameter or afbsr_XXXcookie)
  5. 降级到Rails 3.2.8

我还该怎么办?(我认为关键在于Javascript,现在我有了相同的视频代码,使用CoffeeScript).提前致谢!

Ash*_*aka 17

我刚刚跟着那个Railscast并设法让它运行起来.您会注意到人们在评论中讨论您的问题.在那里的链接之后,我在GithubStackOverflow上的这个问题上结束了这个问题.

我建议更新1.6.0,并2.0.0当它终于出来.在此期间,请确保您没有犯下任何错误:

  • 定义你的应用程序凭据在两个不同的初始化,通常omniauth.rbdevise.rb.资源

  • 您的实时网站与您的Facebook应用程序中配置的网站网址之间的域名不匹配.资源

  • 将Facebook应用程序保留在沙盒模式下,因此域名与生产者不匹配.资源

  • 添加before_filter :authenticate到OmniauthCallbacksController或ApplicationController(因为OmniauthCallbacksController继承自ApplicationController).资源

  • 使用omniauth-facebook与Facebook的客户端流程相结合.资源

  • state参数混淆.