'AuthDataResult'类型的值没有成员'uid'

ren*_*ass 1 firebase swift firebase-authentication

我正在尝试在Firebase身份验证中访问用户的uid.我在我的代码中创建了一个createUser完成块,在块的末尾我想检查我命名为firUser的用户.当我尝试添加firUser.uid我的用户时,我收到错误消息

"'AuthDataResult'类型的值没有成员'uid'"

下面是我写的代码的副本,希望有人可以帮助我.

Auth.auth().createUser(withEmail: email, password: password, completion: { (firUser, error) in
  if error != nil {
     // report error
  } else if let firUser = firUser {
    let newUser = User(uid: firUser.uid, username: username, fullName: fullName, bio: "", website: "", follows: [], followedBy: [], profileImage: self.profileImage)
    newUser.save(completion: { (error) in
      if error != nil {
        // report
      } else {
        // Login User
        Auth.auth().signIn(withEmail: email, password: password, completion: { (firUser, error) in
          if let error = error {
           // report error
           print(error)
         } else {
           self.dismiss(animated: true, completion: nil)
         }
        })
      }
    })
  }
})
Run Code Online (Sandbox Code Playgroud)

Jen*_*son 7

根据指南,使用时.createUser,

如果新帐户已成功创建,则用户已登录,您可以从传递给回调方法的结果对象中获取用户的帐户数据.

请注意,在示例中,您将返回authResult,而不是User对象.authResult包含一些信息,包括用户.您可以使用用户authResult.user.

此外,在调用方法时,如果成功,则用户已经登录,因此没有理由再次登录.我将参数名称更改为authResult样本以帮助消除一些混淆.

Auth.auth().createUser(withEmail: email, password: password, completion: { authResult, error in
  if let error = error {
     // report error
     return
  } 
  guard let authResult = authResult else { return }
  let firUser = authResult.user
  let newUser = User(uid: firUser.uid, username: username, fullName: fullName, bio: "", website: "", follows: [], followedBy: [], profileImage: self.profileImage)
  newUser.save(completion: { (error) in
    if let error = error {
      // report
    } else {
      // not sure what you need to do here anymore since the user is already signed in
    }
  })
})
Run Code Online (Sandbox Code Playgroud)