2016-12-16 76 views
0

我正在使用帳戶工具包,需要將[email protected]存儲在firebase上。所以我嘗試着處理他們的電子郵件和密碼流。 但我發現他們的問題是,他們有兩個不同的流程:一個創建用戶,這是在登錄時createUserWithEmailAndPassword和其他登錄流程時啓動的,需要在用戶登錄時啓動已經創建了-signInUserWithEmailAndPassword。用於登錄和註冊的相同流程:Firebase身份驗證

有沒有像創建和登錄呼叫一樣的東西,它可以確定它是否是第一次使用,因此創建它或現有的用戶。

我可以有一個服務器檢查我的結束,但它帶來延遲和多個呼叫到不同的系統。

+0

調用'createUserWithEmailAndPassword'將在用戶創建時登錄,如果具有該電子郵件地址的用戶已經存在,則失敗。 –

回答

0

你可以做到以下幾點:

firebase.auth().fetchProvidersForEmail(email) 
    .then(function(providers) { 
     if (providers.length > 0) { 
     // The user has already been registered. Careful though: the 
     // following assumes that your users only sign up with email 
     // and password. If they can sign up with other providers 
     // (Google, Facebook...), you may not be able to do the next 
     // call. 
     return firebase.auth().signInWithEmailAndPassword(
      email, password); 
     } else { 
     // No account exists with this email address. 
     return firebase.auth().createUserWithEmailAndPassword(
      email, password); 
    }).then(function(user) { 
     // User is signed in! 
    }); 

這將首先檢查鏈接到該電子郵件地址的提供者。如果列表不是空的,並且用戶只能使用電子郵件和密碼進行註冊(所以沒有Google登錄,Facebook登錄等),那麼可以保證用戶已經使用電子郵件和密碼進行了註冊。在這種情況下,您可以登錄該用戶。如果列表爲空,則不存在用戶,並且可以創建新用戶。

這是否回答你的問題?