在Facebook上授权应用程序后使用“无效凭据”(使用Devise,omniauth:facebook)

时间:2012-12-21 21:21:11

标签: ruby-on-rails ruby facebook devise omniauth

我已按照Devise wiki上的说明使用Facebook帐户登录。

它主要起作用。

问题是,我将登录(user_omniauth_authorize_path(:facebook)),这会将我带到Facebook,点击“授权”按钮。然后我被重定向到我的应用程序,就像我应该的那样,但是我没有点击我的回调函数,而是在flash[:notice]中遇到错误而点击了同一页面(“因为”无效的凭据“无法从Facebook授权你。 “)在后端我看到了:

(facebook) Callback phase initiated.
(facebook) Authentication failure! invalid_credentials: OAuth2::Error, : {"error":{"message":"Code was invalid or expired. Session is invalid. This could be because the application was uninstalled after the session was created.","type":"OAuthException","code":100}}

之后我指向Started GET "/accounts/auth/facebook/callback?code=XXX,但不是在该操作中处理(facebook),而是将其发送到Users::OmniauthCallbacksController#failure

但是,奇怪的是,当我看到我使用我的Facebook帐户授权的应用程序时,我的应用就在那里。下次我点击登录链接时,我会立即获得授权(不要重定向到FB),并通过我的facebook操作登录,没问题。

为什么会发生这种情况或调试提示?他们非常感激。谢谢!

编辑:我的omniauth_callbacks_controller.rb

2 个答案:

答案 0 :(得分:4)

原来Facebook没有运作。我今天早上登录好了,没有更改代码。壮观。

让这成为你的一个教训:有时候,不是你。

答案 1 :(得分:0)

可与此相关:https://developers.facebook.com/bugs/419168608133421?browse=search_50c9f80c2dcb35786620246

我必须说,我们使用Devise和Facebook oAuth,我从来没有在我们的应用程序中看到过这个。你能发一个OmniauthCallbacksController的代码片段吗?