2017-07-27 104 views
1

我正在爲我的iOS應用程序使用Firebase身份驗證。現在我想檢查輸入的電子郵件地址是否可用。我發現我必須爲此使用createUserWithEmailAndPassword。但問題是我不想通過密碼。我只想檢查使用電子郵件。我怎樣才能做到這一點?如何檢查iOS上的Firebase中是否已使用電子郵件地址?

+0

如果發送電子郵件,Firebase身份驗證已經返回錯誤。您爲什麼要在用戶輸入密碼之前進行檢查? –

+0

你想查看電子郵件是什麼意思?您是否確定電子郵件已被使用?或者是什麼? – UmarZaii

+0

其實我的設計就好像有第一頁用戶輸入電子郵件地址。如果該電子郵件已被註冊,則用戶導航到下一個頁面,該頁面是用戶輸入密碼並登錄到應用程序的密碼頁面。所以在第一頁上,我想檢查該電子郵件是否已註冊。 @JenPerson –

回答

0

不幸的是,您無法通過Firebase執行此操作。電子郵件帳戶還需要密碼。

如果你不希望用戶必須輸入密碼,你可以使用其他帳戶選項,如Facebook,谷歌,Twitter的等

+0

其實我的設計就像有第一頁,用戶將輸入電子郵件地址。如果該電子郵件已被註冊,則用戶導航到下一個頁面,該頁面是用戶輸入密碼並登錄到應用程序的密碼頁面。 @bradley –

3

火力地堡中身份驗證的用戶帳戶已經可以電子郵件地址被驗證,它不一定是一個電子郵件+密碼帳戶。 To verify the email address for a user call user.sendEmailVerification()

如果要在註冊用戶之前檢查電子郵件地址是否已被使用,Firebase Admin SDK的方法爲look up a user by their email addressadmin.auth().getUserByEmail(email)。此方法需要管理權限,並且(像所有Admin SDK一樣)只應在受信任的環境中運行 - 通常是您控制的服務器或Firebase的Cloud Functions。

最後注意:請注意,即使您在註冊之前檢查電子郵件地址是否可用,在您撥打createUserWithEmailAndPassword()時,電子郵件地址可能會被其他用戶聲稱。 Jen評論說:如果電子郵件地址已被使用,您還需要處理createUserWithEmailAndPassword()引發的錯誤。

+0

謝謝!任何其他選項,而不使用'admin.auth()。getUserByEmail(email)'? –

0

你只需要創建一個引用,而用戶在FirebaseDB的父「用戶」中註冊,其中的電子郵件ID已用firebase應用程序註冊爲「email」,並在檢查電子郵件時運行以下查詢調用或不

let databaseReff = Database.database().reference().child("users") 

        databaseReff.queryOrdered(byChild: "email").queryEqual(toValue: self.emailTextField.text!).observe(.value, with: { snapshot in 
         if snapshot.exists(){ 

          //User email exist 
         } 
         else{ 
          //email does not [email id available] 
         } 

        }) 
1

以下是(斯威夫特4)你可能會尋找Firebase function的結構:

Auth.auth().fetchProviders(forEmail: emailAddress, completion: { 
     (providers, error) in 

     if let error = error { 
      print(error.localizedDescription) 
     } else if let providers = providers { 
      print(providers) 
     } 
    }) 

如果電子郵件地址已註冊用戶,你會得到一個列表的電子郵件地址的提供者 是用來。否則,提供者列表將爲空,因此電子郵件地址未被註冊。

相關問題