Laut Firebase-Site verwende ich diesen Code, um einen neuen Benutzer zu erstellen:
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {});
Wie kann ich beim Erstellen des neuen Benutzers Anzeigenamen und Foto-URL zu Auth hinzufügen?
Dieser link zeigt die unterstützten Benutzerdaten, die von einem Identitätsanbieter in Auth zurückgegeben werden.
Sie können Ihr Profil mit FIRUserProfileChangeRequest
class aktualisieren. Check Dieses Dokument.
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.
}
}
}
So ändern/fügen Sie den Anzeigenamen hinzu:
user!.createProfileChangeRequest().displayName = "Your name"
PhotoURL ändern/hinzufügen
user!.createProfileChangeRequest().photoURL = URL(string: "image url")
Sie können einfach Ihr Problem wie folgt lösen.
1) Erstellen Sie einen Benutzer mit der folgenden Anweisung.
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {});
2) Erfolg der obigen Aussage Bitte authentifizieren diesen Benutzer wie folgt.
self.rootRef.authUser(email, password)
// USER_ID = Here you get user_ID
3) Erfolg des obigen Funktionsbenutzers und Profilbildes für den Benutzer wie folgt.
usersRef.updateChildValues(dict, withCompletionBlock:
-Hier BenutzerRef enthalten Ihre BenutzerDetails/USER_ID
Könnte Arbeit für Sie sein. Ich habe Code, arbeite aber für ältere Firebase-Version.
Ich denke, das sollte es für dich lösen, lass es mich wissen, wenn du noch etwas brauchst. oder haben weitere Fragen zu diesem Thema.
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)
}
}
}
Ich denke, Sie meinen, dass Sie nach Auth der Firebase-Datenbank einen Anzeigenamen und eine Foto-URL hinzufügen. Das ist so ziemlich das, was ich alle mit derselben Registrierung mache.
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
}
}
Fügen Sie nun Ihr Profilbild und den Benutzernamen in DB hier ein
func completeMySignIn(id: String, userData: Dictionary<String, String>){
{YourFirebaseUserURL}.updateChildValues(userData)
}