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

Facebook UID from response doesn't match with user's uid stored in database

我今天遇到了 Facebook 登录的生产问题。 我正在使用 Rails omniouth-facebook gem 通过 Facebook 对用户进行身份验证。

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

我有这部分:

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

其中 auth 是 env['omniauth.auth'],当我在我的数据库中手动检查用户 auth.email uids 不匹配 ,所以这个函数总是returns 无且登录失败。

有人知道问题出在哪里吗?真的很感激任何提示。

谢谢, 博扬

在 API v2.0 中,Facebook 引入了应用范围内的用户 ID。

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

因此,如果您使用不同的应用程序 ID,请分别。在某些时候切换应用程序 ID,当然您会为同一用户获得不同的应用程序范围的 ID。

如果您的公司有多个应用程序,您可以通过商务管理平台连接它们,这样您就可以为不同的应用程序连接不同的应用程序范围的用户 ID。