问题
I have a problem with the newest version of FirebaseAuth 5.0 this is my code:
func registerUser (withEmail email: String, andPassword password: String, userCreationComplete: @escaping (_ status: Bool, _ error: Error?) -> ()){
Auth.auth().createUser(withEmail: email, password: password) { (user, error) in
guard let user = user else{
userCreationComplete(false, error)
return
}
let userData = ["provider": user.providerID, "email": user.email]
DataService.instance.createDBUser(uid: user.uid, userData: userData)
userCreationComplete(true, nil)
}
}
problem is "Value of type 'AuthDataResult' has no value "ProviderID" " But in firebase 4 this method worked. Thanks!
回答1:
According to the reference docs, the createUser
function passes a completion block with (FIRAuthDataResult?, Error?)
. FirAuthDataResult
is not the same as a User
, but it has a User
as a property, which can be accessed like this:
func registerUser (withEmail email: String, andPassword password: String, userCreationComplete: @escaping (_ status: Bool, _ error: Error?) -> ()){
Auth.auth().createUser(withEmail: email, password: password) { (authResult, error) in
guard let user = authResult.user else {
userCreationComplete(false, error)
return
}
let userData = ["provider": user.providerID, "email": user.email]
DataService.instance.createDBUser(uid: user.uid, userData: userData)
userCreationComplete(true, nil)
}
}
回答2:
func registerUser(withEmail email: String, andPassword password: String, userCreationComplete: @escaping (_ status: Bool, _ error: Error?) -> ()) {
Auth.auth().createUser(withEmail: email, password: password) { (authResult, error) in
guard let user = authResult?.user else {
userCreationComplete(false, error)
return
}
let userData = ["provider": user.providerID, "email": user.email]
DataService.instance.createDBUser(uid: user.uid, userData: userData)
userCreationComplete(true, nil)
}
}
来源:https://stackoverflow.com/questions/51589895/value-of-type-authdataresult-has-no-member-providerid-firebase-5-0