来自响应的Facebook UID与存储在数据库中的用户的uid不匹配

时间:2016-06-06 23:02:57

标签: ruby-on-rails facebook uid

我在今天发生的Facebook登录时遇到了问题。 我通过Fb使用Rails omniouth-facebook gem为身份验证用户。

因此,经过一些调试后,我发现我从Facebook得到的uid与特定用户存储在数据库中的uid不同。

我有这个部分:

find_by(provider: auth.provider, uid: auth.uid)

其中auth为env['omniauth.auth'],当我在数据库 uids不匹配中手动检查用户auth.email时,此函数始终返回nil和Login Failure。

有人知道可能是什么问题吗?真的很感激任何提示。

谢谢, 博

1 个答案:

答案 0 :(得分:1)

借助API v2.0,Facebook推出了应用范围的用户ID。

对于在切换到2.0后登录到您的应用的每个新用户,您将不再获得他们的“全局”用户ID,而只是应用程序范围的用户ID,这对您的应用来说是唯一的 - 更具体地说,它与您的应用ID相关联。

因此,如果您使用的是不同的应用ID,请分别说明。在某些时候切换应用程序ID,当然你会为同一个用户获得不同的app-scoped ID。

如果您的企业有多个应用,您可以通过Business Manager连接它们,以便您可以为不同的应用连接不同的应用范围的用户ID。