ios - CreateNewUser() firebase 方法在用户 uid 的闭包中返回 nil

标签 ios swift firebase firebase-authentication

我正在尝试对用户进行身份验证。但是 createNewUser() firebase 方法在 user?.user.uid 的闭包中返回 nil,因此我无法在正确的节点下添加数据。

下面是我的用户创建方法:

 func createNewUser(email: String, password: String) {
    Auth.auth().createUser(withEmail: email, password: password) { user, error in
        if error == nil && user != nil { //user create works
            print(user, "<-- User Created (user)")
        } else { //user not create
            print("Error creating user: \(error!.localizedDescription)")
        }

        //database integration
        let ref = Database.database().reference()
        let usersRef = ref.child("users2")

        let uid = user?.user.uid
        print(email, "<-- email")

        print(uid, "<-- this is uid")
        let newUserRef = usersRef.child(uid!)//This fails because UID is nil
        newUserRef.setValue(["email": self.emailTextField.text!, "password": self.passwordTextField.text!, "fullName": self.fullNameTextField.text!, "username": self.usernameTextField.text!])

        print(email, "<--- this is emaiL??")

    } //end of create user

}

我该如何解决这个问题?

最佳答案

When I look at the docs for Firebase's "createUserWithEmail:password:completion:" method ,看起来您从 Auth.auth().createUser(withEmail:....

返回了一个 authResult, error

由此,要获得用户,您需要:

func createNewUser(email: String, password: String) {
      Auth.auth().createUser(withEmail: email, password: password) { authResult, error in

      guard let authResult = authResult, error == nil else {
         print("Error creating user: \(error!.localizedDescription)")
         return // an error!
      }

      if let user = authResult.user {
         if let uid = user.uid {
            print("uid is \(uid)")
         }
         if let email = user.email {
            print("email is \(email)")
         }
      }
      ...
      ...
      ...

关于ios - CreateNewUser() firebase 方法在用户 uid 的闭包中返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54966240/

相关文章:

objective-c - 如何知道另一个接口(interface)中的网络事件是否完成?

ios - 碰撞检测中断另一个碰撞检测 - Swift

angularjs - Firebase - 如何在 AngularFire 中更新多个子项而不删除其他子项

Firebase 数据库规则 - 获取显示名称

angular - Firebase Angularfire2 检查用户是否存在于数据库中

ios - 向玩家添加观察者时出错

ios - AVAssetExportPreset 类型的 AVAssetExportSession 问题

iphone - ARC - UIWebView/UIViewController 留在内存中吗?

ios - 如何使用 swift 为 UITapGestureRecognizer 编写通用方法

ios - 正则表达式不允许字符串 swift ios 中出现空格