Firebaseサイトによると、私はこのコードを使用して新しいユーザーを作成しています:
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {});
新しいユーザーを作成するときに、Authに表示名と写真のURLを追加するにはどうすればよいですか?
この link は、AuthのIDプロバイダーから返された、サポートされているユーザーデータを示しています。
FIRUserProfileChangeRequest
class ..でプロファイルを更新できます。確認 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.
}
}
}
これで解決すると思います。他に必要な場合はお知らせください。またはこの問題についてさらに質問があります。
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)
}
}
}
表示名を変更/追加するには:
user!.createProfileChangeRequest().displayName = "Your name"
PhotoURLを変更/追加するには
user!.createProfileChangeRequest().photoURL = URL(string: "image url")
単にあなたは次のようにあなたの問題を解決することができます。
1)次のステートメントを使用してユーザーを作成します。
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {});
2)上記のステートメントの成功authenticateこのユーザーは次のとおりです。
self.rootRef.authUser(email, password)
// USER_ID = Here you get user_ID
3)上記の機能が成功すると、ユーザー名とプロフィール写真が次のようにユーザーに設定されます。
usersRef.updateChildValues(dict, withCompletionBlock:
-ここでuserRefにはuserDetails/USER_IDが含まれています
あなたのために働くかもしれません。私はコードを持っていますが、古いバージョンのFirebaseで動作するため、動作しません。
認証後にFirebaseデータベースに表示名と写真のURLを追加することを意味していると思います。これは、私がすべて同じ登録で行うこととほぼ同じです。
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
}
}
ここでDBにプロフィール画像とユーザーのユーザー名を追加します
func completeMySignIn(id: String, userData: Dictionary<String, String>){
{YourFirebaseUserURL}.updateChildValues(userData)
}