0

因此,當您嘗試使用其他身份驗證方法登錄應用程序時,例如,首先用戶使用Google,現在他使用FB並且這兩個帳戶具有相同的郵件,則會得到該錯誤Firebase帳戶鏈接錯誤

auth/email-already-exists

的事情是,如果你有3+身份驗證方法,該錯誤消息的心不是很具體,它可能是一個有點棘手開發處理這種情況的邏輯。你如何解決這個問題?

回答

4

電子郵件已存在是在firebase-admin sdk中引發的。我不認爲它在客戶端SDK中拋出。

  • 認證/帳戶存在 - 與 - : 對於客戶端SDK,以下錯誤將現有的帳戶鏈接到另外一個時,或在電子郵件中另一個存在一個新的帳戶登錄拋出不同-憑證
  • AUTH /憑據已經在使用中
  • AUTH /電子郵件已經在使用中

在所有上述的,誤差可能包含額外的字段:

  • error.email:憑證自身(通常這是返回OAuth認證)

您可以查找現有的:你想用

  • error.credential登錄相關憑證電子郵件帳戶查明供應商爲它存在什麼:

    firebase.auth().fetchProvidersForEmail(error.email) 
        .then(function(providers) { 
        // Providers would be an array of the form: 
        // ['password', 'google.com'] 
        }); 
    

    在認證/帳戶存在與 - 不同的制證,然後可以與供應商登錄,並根據需要鏈接error.credential在簽署用戶。

    firebase.auth().currentUser.link(error.credential); 
    

    如果連接時發生錯誤(AUTH /憑據已在使用中),您可以直接與證書

    firebase.auth().signInWithCredential(error.credential): 
    
    登錄