Ich glaube, es gibt eine Möglichkeit, Ihr Kennwort in Firebase zu ändern, aber es gibt eine Möglichkeit, bei der der Benutzer das Kennwort vergisst und ein neues zugewiesen oder es kann mit E-Mail oder SMS OTP erneut authentifiziert werden. Ich habe im Internet ausgecheckt, konnte aber scheinbar keinen finden.
Wenn es einen Weg gibt, wie es implementiert werden kann, müssen alle Funktionsaufrufe ausgeführt werden. Könnten Sie mir ein Beispiel geben?
Es klingt, als würden Sie nach einer E-Mail zum Zurücksetzen des Passworts suchen. Siehe dieses Beispiel aus der Firebase-Dokumentation :
FirebaseAuth.getInstance().sendPasswordResetEmail("[email protected]")
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "Email sent.");
}
}
});
Setzen Sie das Android FireBase-Kennwort zurück
Java-Datei
public class ResetPasswordActivity extends AppCompatActivity {
private EditText inputEmail;
private Button btnReset, btnBack;
private FirebaseAuth auth;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reset_password);
inputEmail = (EditText) findViewById(R.id.email);
btnReset = (Button) findViewById(R.id.btn_reset_password);
btnBack = (Button) findViewById(R.id.btn_back);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
auth = FirebaseAuth.getInstance();
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
btnReset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String email = inputEmail.getText().toString().trim();
if (TextUtils.isEmpty(email)) {
Toast.makeText(getApplication(), "Enter your registered email id", Toast.LENGTH_SHORT).show();
return;
}
progressBar.setVisibility(View.VISIBLE);
auth.sendPasswordResetEmail(email)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(ResetPasswordActivity.this, "We have sent you instructions to reset your password!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(ResetPasswordActivity.this, "Failed to send reset email!", Toast.LENGTH_SHORT).show();
}
progressBar.setVisibility(View.GONE);
}
});
}
});
}
}
XML-DATEI
<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:layout_gravity="center"
Android:fitsSystemWindows="true"
tools:context=".LoginActivity">
<LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="30dp"
Android:gravity="center"
Android:orientation="vertical"
Android:padding="@dimen/activity_horizontal_margin">
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_gravity="center_horizontal"
Android:padding="10dp"
Android:text="@string/lbl_forgot_password"
Android:textColor="@Android:color/white"
Android:textSize="20dp" />
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginBottom="10dp"
Android:gravity="center_horizontal"
Android:padding="@dimen/activity_horizontal_margin"
Android:text="@string/forgot_password_msg"
Android:textColor="@Android:color/white"
Android:textSize="14dp" />
<Android.support.design.widget.TextInputLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<EditText
Android:id="@+id/email"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginBottom="10dp"
Android:layout_marginTop="20dp"
Android:hint="@string/hint_email"
Android:inputType="textEmailAddress"
Android:textColor="@Android:color/white"
Android:textColorHint="@Android:color/white" />
</Android.support.design.widget.TextInputLayout>
<!-- Login Button -->
<Button
Android:id="@+id/btn_reset_password"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="20dip"
Android:background="@color/colorAccent"
Android:text="@string/btn_reset_password"
Android:textColor="@Android:color/black" />
<Button
Android:id="@+id/btn_back"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginTop="10dp"
Android:background="@null"
Android:text="@string/btn_back"
Android:textColor="@color/colorAccent" />
</LinearLayout>
<ProgressBar
Android:id="@+id/progressBar"
Android:layout_width="30dp"
Android:layout_height="30dp"
Android:layout_gravity="center|bottom"
Android:layout_marginBottom="20dp"
Android:visibility="gone" />
</Android.support.design.widget.CoordinatorLayout>
Kopieren und Einfügen von Dokumentation :
FirebaseAuth auth = FirebaseAuth.getInstance();
String emailAddress = "[email protected]";
auth.sendPasswordResetEmail(emailAddress)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "Email sent.");
}
}
});
Dieser Link zu den Dokumenten sollte Ihnen helfen:
Kurz gesagt, Firebase hat eine Methode namens changePassword. Folgen Sie dem Link, um herauszufinden, wie Sie dieses implementieren können.
Im Folgenden finden Sie die einfache Methode zum Senden des Links zum Zurücksetzen des Kennworts an die E-Mail-Adresse des Benutzers mit dem Fortschrittsdialog (es dauerte einige Zeit, bis die Firebase die Anforderung abgeschlossen hat Kennwort zurücksetzen aufgrund einer langsamen Internetverbindung auf Clientseite Fortschrittsdialog wird hilfreich sein)
public void resetUserPassword(String email){
FirebaseAuth mAuth = FirebaseAuth.getInstance();
final ProgressDialog progressDialog = new ProgressDialog(ForgotPasswordActivity.this);
progressDialog.setMessage("verifying..");
progressDialog.show();
mAuth.sendPasswordResetEmail(email)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), "Reset password instructions has sent to your email",
Toast.LENGTH_SHORT).show();
}else{
progressDialog.dismiss();
Toast.makeText(getApplicationContext(),
"Email don't exist", Toast.LENGTH_SHORT).show();
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
}
});
}
Wenn Kotlin Ihre bevorzugte Sprache ist, können Sie Folgendes verwenden:
val fAuth = FirebaseAuth.getInstance()
fAuth.sendPasswordResetEmail(email).addOnCompleteListener({ listener ->
if (listener.isSuccessful) {
// Do something when successful
} else {
// Do something when not successful
}
})