web-dev-qa-db-ja.com

Firebaseは、メール、パスワード、表示名、写真のURLでユーザーを作成します

Firebaseサイトによると、私はこのコードを使用して新しいユーザーを作成しています:

firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {});

新しいユーザーを作成するときに、Authに表示名と写真のURLを追加するにはどうすればよいですか?

この link は、AuthのIDプロバイダーから返された、サポートされているユーザーデータを示しています。

11
Alex

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.
        }
      }
    }
19
EI Captain v2.0

これで解決すると思います。他に必要な場合はお知らせください。またはこの問題についてさらに質問があります。

    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)
            }
        }

}
2
Modesto Cabrera

表示名を変更/追加するには:

user!.createProfileChangeRequest().displayName = "Your name"

PhotoURLを変更/追加するには

user!.createProfileChangeRequest().photoURL = URL(string: "image url")

1
Cyril

単にあなたは次のようにあなたの問題を解決することができます。

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で動作するため、動作しません。

0
IMHiteshSurani

認証後に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)
}
0
kelsheikh