2017-02-05 63 views
0

我的目標是通過第一個用戶的唯一UID(換句話說,用戶B屬於用戶A)將兩個用戶鏈接在一起。如何存儲使用Swift 3在Firebase中創建另一個新用戶的登錄用戶的UID?

我採取了以下措施:

  1. 我註冊一個新用戶(A)與電子郵件和密碼驗證。
  2. 我以此用戶登錄(A)。此用戶表示角色「超級用戶」。
  3. 我在用戶(A)登錄時創建一個新用戶(B)。用戶(B)表示角色「簡單用戶」。
  4. 我想要將新用戶(B)的用戶信息(UID,電子郵件,密碼)和登錄用戶的用戶名(A)一起存儲,以便Firebase中的結果如下所示:

    root 
        -superusers 
         -Bl41OxkohiNFc3 
          -email: [email protected] 
          -password: test 
        -simpleusers 
         -Vl21OxkohiFFc3HQ 
          -superuserUID: Bl41OxkohiNFc3 
          -email: @example.de 
          -password: test        
    

我有步驟Nr.4的問題。 Xcode/Firebase不會保存用戶A的UID,它總是將用戶B的UID保存在超級用戶UID中。

這裏是我的第四步代碼:

@IBAction func RegisterSimpleUser(_ sender: Any) { 
FIRAuth.auth()?.createUser(withEmail: autoemail, password: autopassword, completion: {(user, error) in 

     if error != nil { 
      print(error!.localizedDescription) 

     } else { 
      print ("User created") 
     } 

     let userID: String = user!.uid 
     let userEmail: String = simepleuser_email 
     let userPassword: String = simpleuser_password 
     let SuperUserID: String = (FIRAuth.auth()?.currentUser?.uid)! 

//simepleuser_email, simpleuser_password coming from Text Fiels  

     ref.child("simpleusers").child(userID).setValue(["SuperUserID": SuperUserID, "Email": userEmail, "Password": userPassword]) 
} 

我在做什麼錯?任何人都可以幫助我或指出我的方向嗎?我是Firebase/Swift的新手。謝謝。

回答

1

你不能真正做到從客戶:一旦創建新用戶,它們會自動驗證,當前用戶是未經驗證。

但是,您可以在創建新用戶之前將當前uid寫入Firebase,或者在'全局'變量中捕獲當前uid,以便在原始問題的結構中創建新用戶時可以存儲它。

另一種選擇是有當特定客戶「簽約」 admin用戶通知 - 這可以監控特定電子郵件「新用戶節點」。一旦管理員被通知新用戶,他們將被呈現給uid,然後可以寫出相應的節點。

退房這個職位Firebase kicks out current user其中包含相關的話題和更新,其中火力地堡增加了一些服務器功能,可以幫助信息好的信息。

希望火力地堡將提供另一種選擇,今後如創建,它可以創建其他用戶的「管理員」用戶創建從客戶端的用戶是一個很大的挑戰性,它應該是。

+0

你應該得到一個徽章「偉大的週日早晨解析技巧」周杰倫! :-) –

+1

@FrankvanPuffelen哈哈!那個用戶認證協議是一件很痛苦的事情,所以它對我來說是'親愛的',我正在密切關注它。 – Jay

相關問題