【问题标题】:Newly created users are not saved to the Firebase Database新创建的用户不会保存到 Firebase 数据库
【发布时间】:2018-09-25 22:23:03
【问题描述】:

因此,我在创建新用户并将其用户信息(例如名字、姓氏和电子邮件)上传/存储到 firebase 数据库时遇到问题。每当我创建用户并进入我的 firebase 数据库时,都不会出现新用户。

Auth.auth().createUser(withEmail: usernameTextField.text!, password: passwordTextField.text!) { (user, error) in

        if error != nil {

            print(error!.localizedDescription)

            return

        }

        let ref = Database.database().reference()

        let usersReference = ref.child("users")

        let uid = user?.user.uid

        let newUserReference = usersReference.child(uid!)

        newUserReference.setValue(["username": self.usernameTextField.text!,"firstname": self.firstnameTextField.text!, "lastname": self.lastnameTextField.text!,"email": self.emailTextField.text!])

【问题讨论】:

  • 用户是否有写入/users/$uid的权限?如果没有,您应该会在调试输出中看到错误消息,或者您可以通过添加完成块来检测错误:firebase.google.com/docs/database/ios/…
  • 如果我错了,请纠正我,当新用户使用您的应用程序时,他们将使用电子邮件和密码进行注册,一旦完成,您将使用上面的代码为他创建个人资料,对?如果是这种情况,可能是由于您的安全规则,请在此处粘贴您的安全规则
  • 感谢您推荐的解决方案。我想通了...我不小心写了 Auth.auth().createUser(withEmail: usernameTextField.text!, password: passwordTextField.text! 而不是 Auth.auth().createUser(withEmail: emailTextField.text!, password:密码TextField.text!

标签: firebase firebase-realtime-database swift4


【解决方案1】:

这应该有效:

@objc func handleSignUp() {
let ref = Database.database().reference
    Auth.auth().createUser(withEmail:usernameTextField.text!, password: passwordTextField.text!) { (user, error) in

        if error != nil {
            print(error as Any)
            return
        }
        guard let uid = user?.user.uid else {
            return
        }

        // successfully authenticated user
            let values = ["name": "some name", "email": "some email", "username": "your username", "userId": user?.user.uid]
            let userReference = ref.child("user").child(uid)

            let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
            changeRequest?.displayName = self.usernameField.text
            changeRequest?.commitChanges(completion: nil)

            userReference.updateChildValues(values, withCompletionBlock: { (err, ref) in

                if err != nil {
                    print(err as Any)
                    return
                }
      // add your code here to upload user information to FirebaseDatabase
})

希望您的问题得到解决,并且该解决方案适用于您的目的

【讨论】:

    【解决方案2】:

    不小心写了

    Auth.auth().createUser(withEmail: usernameTextField.text!, password: passwordTextField.text!
    

    代替:

    Auth.auth().createUser(withEmail: emailTextField.text!, password: passwordTextField.text!) { (user, error) in
    
        if error != nil {
    
            print(error!.localizedDescription)
    
            return
    
        } ...
    

    【讨论】:

      猜你喜欢
      • 2019-11-09
      • 2020-10-10
      • 2014-09-03
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多