Selon le site Firebase, j'utilise ce code pour créer un nouvel utilisateur:
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {});
Comment puis-je ajouter le nom d'affichage et l'URL de la photo à Auth lors de la création du nouvel utilisateur?
Ce link affiche les données utilisateur prises en charge renvoyées par un fournisseur d’identité dans Auth.
Vous pouvez mettre à jour votre profil avec FIRUserProfileChangeRequest
class .. check this Doc.
let user = FIRAuth.auth()?.currentUser
if let user = user {
let changeRequest = user.profileChangeRequest()
changeRequest.displayName = "Jane Q. User"
changeRequest.photoURL =
NSURL(string: "https://example.com/jane-q-user/profile.jpg")
changeRequest.commitChangesWithCompletion { error in
if let error = error {
// An error happened.
} else {
// Profile updated.
}
}
}
Vous pouvez simplement résoudre votre problème comme suit.
1) Créez un utilisateur en utilisant la déclaration suivante.
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {});
2) succès de la déclaration ci-dessus S'il vous plaît authentifiez cet utilisateur comme suit.
self.rootRef.authUser(email, password)
// USER_ID = Here you get user_ID
3) La fonction ci-dessus a réussi à définir le nom d'utilisateur et l'image de profil comme suit.
usersRef.updateChildValues(dict, withCompletionBlock:
-Here userRef contient votre userDetails/USER_ID
Cela pourrait être un travail pour vous . J'ai du code, mais je travaille pour une version plus ancienne de firebase, donc je ne travaille pas pour vous, sinon je devais partager avec vous
Je pense que cela devrait résoudre le problème pour vous, laissez-moi savoir si vous avez besoin de quelque chose d'autre. ou avez d'autres questions à ce sujet.
func handleSignUp() {
guard let userName = userNameTF.text else { return }
guard let email = emailTF.text else { return }
guard let password = passwordTF.text else { return }
guard let image = profileImage.image else { return }
continueButton.setBackgroundImage(#imageLiteral(resourceName: "inactiveButtonBG"), for: .normal)
activityIndicator.startAnimating()
Auth.auth().createUser(withEmail: email, password: password) { user, error in
if error == nil && user != nil {
print("User created!")
self.uploadProfileImage(image: image) { url in
if url != nil {
let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.displayName = userName
changeRequest?.photoURL = url
changeRequest?.commitChanges { error in
if error == nil {
self.saveProfile(username: userName, profileImageURL: url!) { success in
if success {
print("Success upload of profile image")
self.dismiss(animated: true, completion: nil)
}
}
self.dismiss(animated: true, completion: nil)
} else {
guard let message = error?.localizedDescription else { return }
self.userAlert(message: message)
}
}
} else {
self.userAlert(message: "Unable to load profile image to Firebase Storage.")
}
}
self.dismiss(animated: true, completion: nil)
} else {
guard let message = error?.localizedDescription else { return }
self.userAlert(message: message)
}
}
}
Je pense que vous entendez ajouter le nom d'affichage et l'URL de la photo à la base de données Firebase après la vérification C'est à peu près ce que je fais tous sur le même enregistrement.
if let email = emailField.text where email != "", let pwd = passwordField.text where pwd != ""{
FIRAuth.auth()?.createUserWithEmail(email, password: pwd, completion: { (user, error) in
if error != nil {
print("DEVELOPER: Unable to authenticate with Firebase using email")
}else {
print("DEVELOPER: Successfully authenticated with Firebase using email")
if let user = user {
let userData = ["provider": user.providerID, "userName": "\(user.displayName)", "profileImg": "\(user.photoURL)"]
self.completeMySignIn(user.uid, userData: userData)
}
}
})
} else {
// Email and Password where not filled in
}
}
Ajoutez maintenant votre image de profil et votre nom d'utilisateur dans la base de données ici
func completeMySignIn(id: String, userData: Dictionary<String, String>){
{YourFirebaseUserURL}.updateChildValues(userData)
}