2016-06-06 37 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

相關問題