2017-04-01 136 views
-3

离开Parse并转移到Firebase后,我面临的一个问题是只能通过电子邮件和密码进行注册,我怎样才能让Firebase存储用户名呢?使用用户,电子邮件和密码进行Firebase注册

+0

见http://stackoverflow.com/q/32151178 –

+0

我认为关于Android链接的问题举行会谈,这是同样的事情呢? @FrankvanPuffelen – Abdullah

+0

Firebase SDK在不同平台上的工作原理相同。链接答案中的方法也适用于iOS。如果您在解决问题时遇到问题,请分享[重现您卡住的最小完整代码](http://stackoverflow.com/help/mcve)。 –

回答

2

尝试......

FIRAuth.auth()?.createUser(withEmail: emailField.text!, password: passwordField.text!, completion: { (user: FIRUser?, error) in 
      if error != nil { 
       print(error) 
       return 

      } else { 
      print("User Created...") } 

      guard let uid = user?.uid else { return } 

      // You can set these values to whatever you want, plus add more! 
      let values = ["email": emailField.text!, "username": usernameField.text!] as [String : Any] 

     // Then pass your values into another function called 'RegisterUserIntoDatabase' 
     // which creates the user in your Firebase Database... 

      self.registerUserIntoDatabase(uid, values: values as [String : AnyObject]) 
     }) 


private func registerUserIntoDatabase(_ uid: String, values: [String: AnyObject]) { 
    // Adding User Info 
    let ref = FIRDatabase.database().reference() 
    let usersReference = ref.child("users").child(uid) 

    usersReference.updateChildValues(values, withCompletionBlock: { (err, ref) in 
     if err != nil { 
      print(err) 
      return 
     } 
     print("Successfully Added a New User to the Database") 
    }) 
} 
+0

fileprivate func?你的意思是私人func?因为我使用fileprivate得到了一个错误。谢谢你帮助爵士。 – Abdullah

+0

没问题!如果这有助于你,选择这个答案将不胜感激... –

+0

我只是做了。你应得的!非常感谢! – Abdullah

0
func handleRegister(email:String, password:String, username:String) { 

    //Create User 
    FIRAuth.auth()?.createUser(withEmail: email, password: password, completion: { (user, err) in 

     if err != nil { 
      print(err!.localizedDescription) 
      return 
     } 

     //Success! User Created! 

     if let userID = user?.uid { 

      //Create User Profile 
      let databaseRef = FIRDatabase.database().reference() 
      let usersRef = databaseRef.child("Users").child(userID) 

      let usernameValue = ["username":username] 

      usersRef.updateChildValues(usernameValue, withCompletionBlock: { (err, ref) in 

       if err != nil { 
        print(err!.localizedDescription) 
        return 
       } 

       //Profile created and updated! 
       //You can use perform segue or present controller to go to another controller... 
      }) 

     } 

    }) 

} 
+0

我应该如何调用该函数?谢谢你试图帮助爵士。 – Abdullah

+0

在注册/注册按钮动作中调用此函数。 –

相关问题