web-dev-qa-db-fra.com

Firebase setDisplayName de l'utilisateur lors de la création de l'utilisateur Android

Lors de la création d'un utilisateur, je souhaite pouvoir définir son nom d'affichage. Comment faire cela sur Android? Voici un exemple de ce que je veux réaliser:

mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if(task.isSuccessful()){
                FirebaseUser.getCurrentUser().setDisplayName(mName); //I want to do this
            }
});

Supposons que toutes les variables ont été déclarées et/ou initialisées correctement.

18
Anish Muthali

Vous pouvez définir le nom d'affichage Firebase de l'utilisateur en écrivant les trois lignes de code suivantes:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
                    .setDisplayName(mName).build();

user.updateProfile(profileUpdates);

Ce faisant, votre code d'origine devrait ressembler à ceci:

mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
    @Override
    public void onComplete(@NonNull Task<AuthResult> task) {
        if(task.isSuccessful()){
            // Sign in is successful
            FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

            UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
                .setDisplayName(mName).build();

            user.updateProfile(profileUpdates)
                .addOnCompleteListener(new OnCompleteListener<Void>() {
                  @Override
                  public void onComplete(@NonNull Task<Void> task) {
                      if (task.isSuccessful()) {
                          Log.d(TAG, "User profile updated.");
                      }
                  }
              });
        }
});

Documentation officielle de Firebase: Firebase met à jour le profil d'un utilisateur

Ce que le code ci-dessus fait, c'est que lorsque le compte de l'utilisateur est créé avec succès à l'aide de l'authentification par e-mail et mot de passe, il se connecte ensuite à l'utilisateur. Une fois l'utilisateur connecté, vous pouvez accéder aux propriétés de l'objet utilisateur Firebase de l'utilisateur et définir la propriété de nom d'affichage sur la chaîne de votre choix.

C'est idéal pour tester le nom de profil de l'utilisateur dans les e-mails de vérification.

Remarque : Un objet utilisateur Firebase possède un ensemble fixe de propriétés de base: un ID unique, une adresse e-mail principale, un nom et une URL de photo. Ces propriétés de base sont stockées dans la base de données utilisateur du projet. De plus, ces propriétés peuvent être mises à jour par programme. Cependant, vous ne pouvez pas ajouter directement d'autres propriétés à l'objet utilisateur Firebase; à la place, vous pouvez stocker toutes les propriétés supplémentaires (c'est-à-dire les informations utilisateur) dans votre base de données Firebase Realtime et les référencer à partir de là. ( Doc des propriétés de l'objet utilisateur Firebase )

25
Dabel B.

J'ai trouvé la réponse dans les documents Firebase. Je le cite ici: "Si la connexion a réussi, AuthStateListener exécute le rappel onAuthStateChanged. Dans le rappel, vous pouvez utiliser la méthode getCurrentUser pour obtenir les données de compte de l'utilisateur." Voici le lien: https://firebase.google.com/docs/auth/Android/password-auth#sign_in_a_user_with_an_email_address_and_password

Cela signifie donc que si vous effectuez le code ci-dessus (moins la ligne FirebaseUser), puis déclarez et initialisez un Firebase AuthStateListener comme indiqué ci-dessous, vous pouvez définir le nom d'affichage de l'utilisateur, puis passer à toute autre activité que vous souhaitez:

mAuthListener = new FirebaseAuth.AuthStateListener() {
    @Override
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
        FirebaseUser user = firebaseAuth.getCurrentUser();
        if(user!=null){
            UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
                        .setDisplayName(mName).build();
            user.updateProfile(profileUpdates);
            Intent intent = new Intent(currentActivity.this, nextActivity.class);
            startActivity(intent);
        }
    }
};

Et n'oubliez pas d'ajouter AuthStateListener dans onResume () comme ceci:

@Override
public void onResume(){
    super.onResume();
    mAuth.addAuthStateListener(mAuthListener);
}

De même, n'oubliez pas de le supprimer dans la méthode onStop comme ceci:

@Override
public void onStop(){
    super.onStop();
    if(mAuthListener != null){
        mAuth.removeAuthStateListener(mAuthListener);
    }
}

Et.. Voila! Vous définissez le nom d'affichage de l'utilisateur afin de pouvoir l'utiliser dans d'autres activités. Cela serait utile si vous souhaitez saluer l'utilisateur ou accéder à toute autre donnée utilisateur liée au nom d'affichage.

19
Anish Muthali