Kennwort mit Firebase für Android ändern

Ich möchte Change-Passwort-Funktionalität für meine Anwendung implementieren.

Ich habe com.google.firebase:firebase-auth:9.0.2 in meiner build.gradle Datei und so weit alles funktioniert gut, bis ich versucht habe, Change-Passwort-Funktionalität zu implementieren.

Ich habe festgestellt, dass das FirebaseUser Objekt eine updatePassword Methode hat, die ein neues Passwort als Parameter übernimmt. Ich könnte diese Methode nutzen und die Validierung selbst implementieren. Allerdings brauche ich das aktuelle Passwort des Benutzers für den Vergleich mit dem eingegebenen und ich kann nicht finden, einen Weg, um dieses Passwort zu bekommen.

Ich habe auch eine andere Methode auf dem Firebase Objekt gefunden, das das alte Passwort, das neue Passwort und einen Handler übernimmt. Das Problem ist, dass ich auch com.firebase:firebase-client-android:2.5.2+ auf diese Klasse zugreifen muss und wenn ich diese Methode versuche, bekomme ich folgendes Fehler:

Projekte, die auf console.firebase.google.com erstellt wurden, müssen die neuen Firebase-Authentifizierungs-SDKs verwenden, die von firebase.google.com/docs/auth/ verfügbar sind.

Fühlen Sie sich wie ich hier etwas fehlt. Was ist der empfohlene Ansatz für die Umsetzung dieser? Und wann welche Abhängigkeit?

  • FirebaseAuth.getCurrentUser () return null DisplayName
  • Wie loswerden Android Studio Warnung "Ergebnis von getException () nicht geworfen"?
  • Retrive-Liste der Benutzer aus Firebase-Authentifizierung
  • Ordnungsgemäß abmelden ein Benutzer aus Android-App
  • So behandeln Sie benutzerdefinierte Firebase-Token-Ablauf in Firebase 3.xx
  • Firebase Verwalten Sie mehrere Auth Provider
  • Wie kann ich den Android Firebase-Fehler lösen "Default FirebaseApp ist in diesem Prozess nicht initialisiert"?
  • Firebase-Berechtigung verweigert (lesen und schreiben) mit Authentifizierung
  • 4 Solutions collect form web for “Kennwort mit Firebase für Android ändern”

    Ich fand ein praktisches Beispiel dafür in der Firebase docs :

    Einige sicherheitsempfindliche Aktionen – wie z. B. das Löschen eines Kontos, das Festlegen einer primären E-Mail-Adresse und das Ändern eines Passworts – erfordern, dass der Benutzer sich zuletzt angemeldet hat. Wenn Sie eine dieser Aktionen ausführen und der Benutzer zu lange gehört hat, Aktion schlägt und wirft FirebaseAuthRecentLoginRequiredException. Wenn dies geschieht, erneuern Sie den Benutzer neu, indem Sie neue Anmeldeinformationen vom Benutzer erhalten und die Anmeldeinformationen übergeben, um sie erneut zu authentifizieren. Beispielsweise:

     FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); // Get auth credentials from the user for re-authentication. The example below shows // email and password credentials but there are multiple possible providers, // such as GoogleAuthProvider or FacebookAuthProvider. AuthCredential credential = EmailAuthProvider .getCredential("user@example.com", "password1234"); // Prompt the user to re-provide their sign-in credentials user.reauthenticate(credential) .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { user.updatePassword(newPass).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Log.d(TAG, "Password updated"); } else { Log.d(TAG, "Error password not updated") } } }); } else { Log.d(TAG, "Error auth failed") } } }); 

    Es gibt keine Möglichkeit, das aktuelle Passwort eines Benutzers aus der Firebase-Authentifizierung abzurufen.

    Eine Möglichkeit, Ihren Benutzern zu erlauben, ihr Passwort zu ändern, besteht darin, einen Dialog zu zeigen, in dem sie ihr aktuelles Passwort eingeben und das neue Passwort, das sie möchten. Sie updatePassword() den Benutzer mit dem aktuellen Passwort an und aktualisieren ihn und aktualisieren Sie das updatePassword() , um es zu aktualisieren.

    Das Passwort in Firebase ändern ist etwas knifflig. Es ist nicht so, wie wir es normalerweise tun, um das Passwort im serverseitigen Scripting und der Datenbank zu ändern. Um die Change-Passwort-Funktionalität in Ihrer App zu implementieren, müssen Sie zuerst die E-Mails des Benutzers von FirebaseAuth erhalten oder den Benutzer dazu veranlassen, E-Mails einzugeben und danach die Eingabe des alten Passworts aufzufordern, da Sie das Passwort des Nutzers nicht abrufen können, wie Frank van Puffelen sagte. Danach musst du das neu authentifizieren. Sobald die erneute Authentifizierung abgeschlossen ist, können Sie updatePassword() . Ich habe eine Probe unten hinzugefügt, die ich für meine eigene App verwendet habe. Hoffe, es wird dir helfen.

     private FirebaseUser user; user = FirebaseAuth.getInstance().getCurrentUser(); final String email = user.getEmail(); AuthCredential credential = EmailAuthProvider.getCredential(email,oldpass); user.reauthenticate(credential).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if(task.isSuccessful()){ user.updatePassword(newPass).addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if(!task.isSuccessful()){ Snackbar snackbar_fail = Snackbar .make(coordinatorLayout, "Something went wrong. Please try again later", Snackbar.LENGTH_LONG); snackbar_fail.show(); }else { Snackbar snackbar_su = Snackbar .make(coordinatorLayout, "Password Successfully Modified", Snackbar.LENGTH_LONG); snackbar_su.show(); } } }); }else { Snackbar snackbar_su = Snackbar .make(coordinatorLayout, "Authentication Failed", Snackbar.LENGTH_LONG); snackbar_su.show(); } } }); } } 

    Abfrage dreht sich um Benutzer, die ihre Passwörter vergessen oder ihre Passwörter über einen E-Mail-Brief zurücksetzen möchten. Die von Auth.sendPasswordResetEmail("email@gmail.com");

    Beginnen mit der Initialisierung

      private FirebaseAuth mAuth; private FirebaseAuth.AuthStateListener mAuthListener; private String DummyEmail = "Dummy@gmail.com" 

      mAuth = FirebaseAuth.getInstance(); mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { if (firebaseAuth.getCurrentUser() == null) { } } }; 

    Irgendwo anders, wenn ein Benutzer anfordert, ihre Passwörter zu aktualisieren oder zurückzusetzen, greifen Sie einfach auf den mAuth zu,

      private void PassResetViaEmail(){ if(mAuth != null) { Log.w(" if Email authenticated", "Recovery Email has been sent to " + DummyEmail); mAuth.sendPasswordResetEmail(DummyEmail); } else { Log.w(" error ", " bad entry "); } } 

    Jetzt, unnötig, um sich selbst zu belasten, um Ihre Datenbank zu finden, um zu finden, ob die E-Mails verlassen oder nicht, Firebase mAuth wird das für Sie behandeln.

    Ist die E-Mail authentifiziert? Ist es in Ihrer Authentifizierungsliste aktiv? Dann senden Sie eine Passwort-Reset-E-Mail.

    Bildbeschreibung hier eingeben

    Der Inhalt sieht so aus

    Bildbeschreibung hier eingeben

    Der Reset-Link wird den folgenden Dialog auf einer neuen Webseite auffordern Io

    Extra

    Wenn du von der zurückgesetzten Vorlage "von" Firebase "entworfen bist. Sie können ganz einfach Ihren eigenen Brief von der Firebase-Konsole anpassen und anpassen. Authentifizierung> E-Mail-Vorlagen> Passwort zurücksetzen

    Bildbeschreibung hier eingeben

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.