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

Ruby on rails 错误--omniauth:(facebook)身份验证失败,ruby-on-rails,omniauth-facebook,Ruby On Rails,Omniauth Facebook,我使用最新的Omniauth Facebookgem收到以下错误: 错误——omniauth:(facebook)身份验证失败!无效的\u凭据:OAuth2::错误: 我的凭证是正确的,我似乎点击了facebook ok,但回拨错误消失了 有什么想法吗?我遇到的问题是,我的应用程序使用的是较旧版本的facebook API。 Omniauth facebook使用默认的API版本,在我的例子2.4中,但我的应用程序需要更新的版本,因为这是它在我的facebook开发者控制台中所说的。就我而言,我

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

错误——omniauth:(facebook)身份验证失败!无效的\u凭据:OAuth2::错误:

我的凭证是正确的,我似乎点击了facebook ok,但回拨错误消失了


有什么想法吗?

我遇到的问题是,我的应用程序使用的是较旧版本的facebook API。 Omniauth facebook使用默认的API版本,在我的例子2.4中,但我的应用程序需要更新的版本,因为这是它在我的facebook开发者控制台中所说的。就我而言,我所要做的就是将omniauth facebook gem更新为4.0版

如果您希望设置要使用的Facebook API版本,而不是像这样使用默认版本(omniauth Facebook docs):

您可以通过访问facebook开发者控制台来检查应用程序使用的API验证

您可以在此处阅读有关omniauth facebook gem API的更多信息:

我也有同样的问题,但指定版本对我没有帮助。我最终传递了
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

我已经找到了参考

如果您没有直接使用gem作为中间件,而是在
config/initializers/designe.rb
中配置您的选项(如),您可以通过向配置选项添加
令牌参数:{parse::json}
来解决这个问题

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

config.omniauth:facebook,“APP_ID”,“APP_SECRET”,token_参数:{parse::json}


这个问题在上面链接的Deviate的wiki中得到了明确的处理(请参阅“如果您看到类似的情况,则无法从Facebook验证您的身份,因为“凭据无效”…)

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

由于你对你的问题不明确,我把我经过多次尝试和研究后得到的答案放在这里

我的错误

ERROR -- omniauth: (facebook) Authentication failure! invalid_credentials: OAuth2::Error, {"message"=>"Cannot call API for app 67878******** on behalf of user sa97**********", "type"=>"OAuthException", "code"=>200, "fbtrace_id"=>"8987987*********"}:
在一个案例中,我遇到了上述问题,如果通过注册自己的详细信息进行身份验证的Facebook用户在其Facebook个人资料中只拥有手机号码,并且没有电子邮件ID,因为我的应用程序正在验证在创建任何用户对象之前应该存在的电子邮件ID

因为相同的代码在配置文件中具有电子邮件id的用户身上运行良好


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

您使用的是哪个特定版本的omniauth?我在一周前遇到了相同的问题,并解决了它。您是如何解决的?重复:这在本地修复了它,但对于live应用程序,我仍然有问题。我的测试应用程序是API v2.8,但我的live应用程序是v2.6,我猜这就是问题所在。知道如何升级live app API吗?尝试设置API,使其与live app的API匹配。据我所知,无法从开发人员门户更改API版本。请按照我在回答中的建议,在初始值设定项中进行设置。将v3.0更改为v2.6。我在designe.rb文件中进行了设置e到以下字段:
config.omniauth:facebook,Rails.application.secrets.facebook\u id,Rails.application.secrets.facebook\u secret,info\u字段:'email,name,birthday',:client\u options=>{:site=>'https://graph.facebook.com/v2.6“,:authorize_url=>”https://www.facebook.com/v2.6/dialog/oauth"       }
对于设置为2.8的测试应用程序在本地运行良好,但对于设置为2.6的live应用程序则没有任何效果
ERROR -- omniauth: (facebook) Authentication failure! invalid_credentials: OAuth2::Error, {"message"=>"Cannot call API for app 67878******** on behalf of user sa97**********", "type"=>"OAuthException", "code"=>200, "fbtrace_id"=>"8987987*********"}: