我正在尝试在 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)
这是一个非常常见的错误;我进行了研究并尝试了所有解决方案(主要是几个月前的),但它们都不起作用。这是我尝试过的:
- 检查 Facebook 中的沙箱已禁用(我已经等待了几个小时的传播)
- 检查站点 URL
http://localhost:3000/
- 检查 App ID 和 App Secret
- 将omniauth-facebook gem降级到1.4,并抛出这个错误:
omniauth-facebook must pass either a
codeparameter or a signed request (via
signed_requestparameter or a
fbsr_XXXcookie)
- 降级到 Rails 3.2.8
我还应该做什么?(我认为关键在于 Javascript,而现在我拥有与 CoffeeScript 相同的视频代码)。提前致谢!