wake-up-neo.com

Firebase setDisplayName des Benutzers beim Erstellen des Benutzers Android

Beim Erstellen eines Benutzers möchte ich seinen Anzeigenamen festlegen können. Wie mache ich das in Android? Hier ist ein Beispiel dafür, was ich erreichen möchte:

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

Angenommen, alle Variablen wurden korrekt deklariert und/oder initialisiert.

18
Anish Muthali

Sie können den Firebase-Anzeigenamen des Benutzers festlegen, indem Sie die folgenden drei Codezeilen eingeben:

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

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

user.updateProfile(profileUpdates);

Auf diese Weise sollte Ihr ursprünglicher Code folgendermaßen aussehen:

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.");
                      }
                  }
              });
        }
});

Offizielle Firebase-Dokumentation: Firebase-Update eines Benutzerprofils

Der obige Code bewirkt, dass sich der Benutzer anmeldet, wenn das Benutzerkonto mithilfe der E-Mail- und Kennwortauthentifizierung erfolgreich erstellt wurde. Sobald der Benutzer angemeldet ist, können Sie auf die Firebase-Benutzerobjekteigenschaften des Benutzers zugreifen und die Anzeigenameneigenschaft auf eine beliebige Zeichenfolge festlegen.

Dies ist ideal, um den Profilnamen des Benutzers in Bestätigungs-E-Mails zu testen.

Hinweis : Ein Firebase-Benutzerobjekt verfügt über einen festen Satz grundlegender Eigenschaften: eine eindeutige ID, eine primäre E-Mail-Adresse, einen Namen und eine Foto-URL. Diese grundlegenden Eigenschaften werden in der Benutzerdatenbank des Projekts gespeichert. Darüber hinaus können diese Eigenschaften programmgesteuert aktualisiert werden. Sie können dem Firebase-Benutzerobjekt jedoch keine anderen Eigenschaften direkt hinzufügen. Stattdessen können Sie zusätzliche Eigenschaften (z. B. Benutzerinformationen) in Ihrer Firebase-Echtzeitdatenbank speichern und von dort aus darauf verweisen. ( Firebase User Object Properties Doc )

25
Dabel B.

Ich habe die Antwort in den Firebase-Dokumenten gefunden. Ich zitiere es hier: "Wenn die Anmeldung erfolgreich war, führt der AuthStateListener den onAuthStateChanged-Rückruf aus. Im Rückruf können Sie die getCurrentUser-Methode verwenden, um die Kontodaten des Benutzers abzurufen." Hier ist der Link: https://firebase.google.com/docs/auth/Android/password-auth#sign_in_a_user_with_an_email_address_and_password

Wenn Sie also den obigen Code (abzüglich der FirebaseUser-Zeile) ausführen und dann einen Firebase-AuthStateListener wie unten gezeigt deklarieren und initialisieren, können Sie den Anzeigenamen des Benutzers festlegen und dann zu einer anderen gewünschten Aktivität übergehen:

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

Und vergessen Sie nicht, den AuthStateListener in onResume () wie folgt hinzuzufügen:

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

Vergessen Sie auch nicht, es in der onStop-Methode wie folgt zu entfernen:

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

Und fertig! Sie legen den Anzeigenamen des Benutzers fest, damit Sie ihn in anderen Aktivitäten verwenden können. Dies ist nützlich, wenn Sie den Benutzer begrüßen oder auf andere Benutzerdaten zugreifen möchten, die mit dem Anzeigenamen verknüpft sind.

19
Anish Muthali