错误 - omniauth:(facebook)身份验证失败

时间:2017-04-02 22:55:39

标签: ruby-on-rails omniauth-facebook

我使用最新的Omniauth Facebook gem收到以下错误:

ERROR -- omniauth: (facebook) Authentication failure! invalid_credentials: OAuth2::Error, :

我的凭据是正确的,我似乎打得好,但回调错误了。

有什么想法吗?

4 个答案:

答案 0 :(得分:3)

我遇到的问题是我的应用程序使用的是旧版本的facebook API。 Omniauth-facebook使用默认的API版本,在我的情况下2.4,但我的应用程序需要更新的版本,因为这就是它在我的Facebook Developer Console中所说的。在我的情况下,我所要做的就是将omniauth-facebook gem更新到4.0版本。

如果您希望可以设置要使用的Facebook API版本,而不是使用默认值(omniauth-facebook docs):

use OmniAuth::Builder do
  provider :facebook, ENV['APP_ID'], ENV['APP_SECRET'],
    client_options: {
      site: 'https://graph.facebook.com/v3.0',  # this is the example API version
      authorize_url: "https://www.facebook.com/v3.0/dialog/oauth"
    }
end

您可以转到您的Facebook开发者控制台,查看您的应用正在使用哪个API版本。 enter image description here

您可以在此处阅读有关omniauth-facebook gem API的更多信息: http://www.rubydoc.info/gems/omniauth-facebook/4.0.0#API_Version

答案 1 :(得分:2)

我有同样的问题,但指定版本并没有帮助我。我最终通过token_params: { parse: :json }类似下面的内容解决了我的问题:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, Figaro.env.fb_appid, Figaro.env.fb_sec,
           { scope: 'email',  token_params: { parse: :json } }
end

我找到了参考#174 comment

答案 2 :(得分:1)

如果您不是直接使用gem作为中间件,而是在config/initializers/devise.rb中配置选项(例如the guide in Devise's wiki suggests),则可以通过在配置选项中添加token_params: { parse: :json }来解决此问题。

因此,在config/initializers/devise.rb中:

config.omniauth :facebook, "APP_ID", "APP_SECRET", token_params: { parse: :json }

此问题已在上面链接的Devise的Wiki中明确处理(请参阅“如果您看到类似“由于无效的凭据”而无法从Facebook进行身份验证之类的内容...”

答案 3 :(得分:0)

请尝试提供尽可能多的详细信息,尝试具体说明您的问题以更深入地了解该问题。这将有助于找出确切的问题和答案。

由于您不确定问题所在。经过很多次尝试和研究后,我得到了我的答案。

我的错误

export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

在以下情况下,我面临上述问题:如果通过注册自己的详细信息进行身份验证的Facebook用户在他的Facebook个人资料中仅具有手机号码和没有电子邮件ID ,因为我的应用正在验证在创建任何User对象之前应该存在的电子邮件ID。

因为对于在个人资料中具有电子邮件ID的用户,相同的代码可以正常工作。

尽管Facebook错误应该更具体,这可以节省开发人员调试确切问题的时间。