我正在尝试对用户进行身份验证。但是 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/