使用用户、电子邮件和密码注册 Firebase



离开 Parse 并迁移到 Firebase 后,我遇到了一个问题,只能使用电子邮件和密码进行注册,如何让 Firebase 也存储用户名?

试试这个...

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")
    })
}
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...
            })
        }
    })
}

最新更新