2016-06-06 22 views
2

我在今天发生的Facebook登录生产中遇到问题。 我正在使用Rails omniouth-facebook gem通过Fb验证用户。来自回复的Facebook UID与存储在数据库中的用户的uid不匹配

因此,经过一些调试后,我发现uid我从Facebook得到的回复与uid哪个用户存储在数据库中不一样。

我有这样的一部分:

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

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

有没有人有想法可能是什么问题?真的很感激任何提示。

感谢, 博扬

+0

UID的范围是?根据API和上下文,Facebook可能会返回与特定页面的关系唯一的id。 –

+0

我不知道它的范围,我想是的,因为我有Fb申请注册。同时也在几乎相同的配置和一切工作正常 – zauzaj

+0

我刚刚检查,它的范围,因为它使用V2.5 重点是,它工作大约4-5小时前,我不知道什么是发生和如何解决它。 – zauzaj

回答

1

随着API 2.0版,Facebook的推出APP-范围的用户ID。

对于在切换到2.0后登录到您的应用程序的每个新用户,您将不会再获取其“全局”用户标识,而只会获得应用程序范围内的唯一应用程序 - 更具体地说,它与你的应用程序ID绑定。

所以,如果你使用不同的应用程序id,resp。在某些时候切换应用ID,当然你会得到不同的应用范围的ID为同一个用户。

如果您的公司有多个应用程序,则可以通过Business Manager连接它们,以便您可以连接不同应用程序的不同应用程序范围的用户标识。

+0

感谢您的回复。 所以这里的重点是,这只是我们用于生产的一个应用程序,今年1月我们正在使用它。 从昨天开始,当我注意到这个问题时,一切都很完美。我们在那里既没有触摸App也没有触摸Facebook_key/Facebook_secret。 所以现在我们现有的用户抱怨,因为他们无法通过Facebook登录,我们必须快速找到解决方案。你有什么建议吗? – zauzaj

+0

对于同一个应用程序ID,应用程序范围的用户id应该保持不变。如果情况并非如此,请提交错误报告:https://developers.facebook.com/bugs – CBroe

+0

另外我注意到,当我尝试执行如下操作时: www.facebook.com/user_id它可与两个uid 。从现有用户的数据库和响应的新数据库中挖掘数据。 也许我应该用新的更新它们? – zauzaj

相关问题