1

Ich entwickle eine Android-Anwendung mit Firebase-Benutzerauthentifizierung. Das Problem, mit dem ich konfrontiert bin, ist, dass ich E-Mail und Passwort vom Benutzer bekomme und diesen Benutzer dann in Firebase einrichte. Ich überprüfe nicht, welche E-Mail der Benutzer eingegeben hat. Jetzt möchte ich Reset-Passwort-Funktion implementieren. Dazu stellt Firebase die Methode resetPassword bereit und sendet eine E-Mail mit dem Rücksetzpasswort an diesen bestimmten Benutzer. Aber die Frage ist, dass, wenn E-Mail nicht existiert, was sollen wir tun?Firebase Reset-Passwort, wenn E-Mail nicht existiert

Hier ist der Code, den ich Benutzer in Firebase registrieren bin mit:

private void registerUser(){ 

     //creating a new user 
     firebaseAuth.createUserWithEmailAndPassword("user email here", "user password here") 
       .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
        @Override 
        public void onComplete(@NonNull Task<AuthResult> task) { 

         //checking if success 
         if(task.isSuccessful()){ 
          //display some message here 
         }else{ 
          //display some message here 
         } 

        } 
       }); 

    } 

Bitte lassen Sie mich wissen, ob es eine alternative Option für diese Funktion zur Verfügung steht. Danke.

Antwort

1

Bitte versuchen Sie mit unten Code kann Ihnen helfen, ich benutze dies.

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

Eine Alternative wäre die Firebase Admin SDK zu verwenden, das Kennwort des Benutzers zu ändern. Von der documentation on updating user information:

Die updateUser() Methode ermöglicht es Ihnen, die Daten eines vorhandenen Benutzers zu ändern. Er nimmt ein uid für den Benutzer sowie ein Objekt, das die UserRecord Eigenschaften zu aktualisieren enthält, zu aktualisieren:

admin.auth().updateUser(uid, { 
    email: "[email protected]", 
    emailVerified: true, 
    password: "newPassword", 
    displayName: "Jane Doe", 
    photoURL: "http://www.example.com/12345678/photo.png", 
    disabled: true 
}) 
    .then(function(userRecord) { 
    // See the UserRecord reference doc for the contents of userRecord. 
    console.log("Successfully updated user", userRecord.toJSON()); 
    }) 
    .catch(function(error) { 
    console.log("Error updating user:", error); 
    }); 

mit:

Passwort-String - Der Benutzer neuen raw , unverhastetes Passwort. Muss mindestens sechs Zeichen lang sein.

Dieser Teil des Firebase Admin SDK ist derzeit nur in Node.js verfügbar. Wenn Sie jedoch noch keinen Node.js-Server haben, können Sie die Funktionalität in Cloud Functions for Firebase implementieren.

Verwandte Themen