【问题标题】:"Invalid Credentials" after authorizing app on Facebook (using Devise, omniauth :facebook)在 Facebook 上授权应用程序后出现“无效凭据”(使用 Devise、omniauth :facebook)
【发布时间】:2012-12-09 11:01:18
【问题描述】:

我已按照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

【问题讨论】:

  • 向我们展示您如何在您的应用程序中定义 facebook 密钥/ID 和密码。在 devise.rb 文件中?在omniauth.rb 文件中?使用 ENV 变量?直接在文件里?
  • 它在 devise.rb 初始化中,如教程中所述。正如我所说,该应用程序实际上已获得授权(它显示在我在 Facebook 上的授权应用程序列表中,并且下次我单击 user_omniauth_authorize_path(:facebook) 链接时,确实会调用 facebook 回调。非常令人沮丧。跨度>
  • 哦,我现在明白了。确实令人沮丧。您的 Facebook 应用程序的设置是什么?在开发中,您只需将站点 URL 设置为 http://localhost:3000/ 。你是如何定义你的路线的? /accounts/auth/facebook/callback?code=XXX 似乎是一个奇怪的 url 回调。不应该是/users/auth/facebook/callback吗?
  • 站点 URL 设置为我的 VM 的 ip,因此它不是 localhost,但它确实有效(当我第二次登录时,它会将我正确重定向到我的站点),并且回调路由也可以正常工作(因为它确实会触发回调——我们在应用程序上有accounts而不是users)。除了我第一次授权该应用程序后发生的情况外,这一切似乎都在工作。有类似问题的人(发现了一些,我想......)也无法找到帮助。我可能只需要制作一个简单的测试用例,然后从那里开始工作……

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


【解决方案1】:

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

我必须说,我们使用 Devise 和 Facebook oAuth,我从未在我们的应用程序中看到过这种情况。你能发布一个你的 OmniauthCallbacksController 的代码 sn-p 吗?

【讨论】:

  • 我看到了上面的链接,但我认为它不一样?该应用程序似乎没有获得授权?我将在上面发布回调控制器的完整代码(要点)
【解决方案2】:

事实证明 Facebook 无法正常工作。我今天早上登录很好,没有更改任何代码。壮观。

让这对你来说是一个教训:有时,不是你。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-01
    相关资源
    最近更新 更多