web-dev-qa-db-fra.com

Mot de passe oublié dans Firebase pour Android

Je pense qu'il existe un moyen de changer votre mot de passe dans Firebase, mais existe-t-il un moyen par lequel l'utilisateur oublie le mot de passe et peut en recevoir un nouveau ou être authentifié à nouveau par courrier électronique ou par SMS OTP. J'ai jeté un coup d'œil sur le net mais je n'arrivais pas à en trouver un. 

S'il existe un moyen de le mettre en œuvre, tous les appels de fonction doivent être effectués. Pourriez-vous me diriger avec un exemple. 

15
rut_0_1

Il semble que vous souhaitiez envoyer un courrier électronique de réinitialisation de mot de passe. Voir cet exemple tiré de la documentation de Firebase :

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.");
            }
        }
    });
44
Frank van Puffelen

Réinitialiser le mot de passe Android FireBase

Fichier Java 

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

}

FICHIER XML

<?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>
10
mohit singh

Copié et collé de documentation :

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.");
                }
            }
        });
3
Diego Venâncio

Ce lien vers la documentation devrait vous aider:

DOCUMENTATION

En bref, Firebase a une méthode à utiliser appelée changePassword, suivez le lien pour savoir comment l’implémenter.

3
Rikhil Shah

Vous trouverez ci-dessous une méthode simple pour envoyer le lien de réinitialisation du mot de passe sur l'adresse électronique de l'utilisateur avec la boîte de dialogue de progression (parfois, firebase mettait du temps à terminer la demande réinitialisation du mot de passe en raison d'une connexion Internet lente côté client, donc boîte de dialogue de progression sera utile)

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();
            }
        });
    }
1
Hassnain Jamil

Si Kotlin est votre langue de choix, vous pouvez utiliser ceci:

val fAuth = FirebaseAuth.getInstance()
fAuth.sendPasswordResetEmail(email).addOnCompleteListener({ listener ->
        if (listener.isSuccessful) {
            // Do something when successful
        } else {
            // Do something when not successful
        }
})
0
JPetric