0

背景:如何正確鏈接Firebase中的不同身份驗證帳戶IOS

我正在開發一個使用Firebase作爲後端的IOS應用程序。 有3個認證: 1:密碼和電子郵件 2:臉譜 3:谷歌

我已經檢查了option選項 「每個帳戶一個電子郵件」。

的情況是:

說,如果我先登錄與驗證提供者之一,後來,註銷,並希望與任何其他兩種驗證供應商註冊。如果當前提供商的關聯電子郵件與以前相同,我將收到「電子郵件地址已被使用」錯誤。在這種情況下,我想將當前的Auth帳戶與以前的帳戶關聯起來。

我知道我需要調用linkWithCredential:completion:方法來鏈接帳戶。但我首先需要登錄以前的帳戶,但我怎麼能告訴哪個帳戶登錄?例如,如果我通過Facebook登錄並收到「正在使用的電子郵件」錯誤,那麼我現在應該如何知道是否應該通過Google或電子郵件/密碼登錄?

一個有趣的事情是,如果我使用Facebook或電子郵件/密碼先登錄,然後用Google登錄,firebase將自動處理鏈接,但默認行爲是用Google覆蓋以前的Auth提供商並保留UID ...

我發現了一個有用的帖子How to manage users' different authentication in firebase

但它只能處理簡單的情況下驗證只有兩個。

回答

1

當您收到憑證已存在錯誤時,您已經擁有該電子郵件,那麼您將使用該電子郵件呼叫fetchProvidersForEmail,該電子郵件將查找與該電子郵件關聯的提供商ID。然後您使用其中一個提供商登錄用戶。在完成使用現有帳戶登錄後,您可以使用導致發生錯誤的原始憑證撥打linkWithCredential:completion:。這會導致帳戶鏈接。用戶下次嘗試登錄時,他們將能夠通過任一提供商登錄到同一用戶。

檢查FirebaseUI-iOS已經爲您處理整個流程。您還可以查看源代碼,瞭解他們如何處理這種情況:https://github.com/firebase/FirebaseUI-iOS

相關問題