Je souhaite vérifier si l'utilisateur est déjà inscrit. Voici mon code. Veuillez aider. Merci.
fAuth = FirebaseAuth.getInstance(); signUpBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if((validateName()||validateLastName()||validateEmail()||validatePassword()||validateRepeatPassword())!= true){ String email = uEmail.getText().toString().trim(); String password = uPassword.getText().toString().trim(); fAuth.createUserWithEmailAndPassword(email,password); Toast.makeText(SignUpActivity.this,"Welcome!",Toast.LENGTH_SHORT).show(); openPhoneActivity(); }else { //here will be toast with something like "You are already registered" } } });
3 Réponses :
La méthode createUserWithEmailAndPassword
vérifiera si un e-mail existe déjà dans l'authentification Firebase. À partir de la documentation:
FirebaseAuthUserCollisionException
levée s'il existe déjà un compte avec l'adresse e-mail donnée
Vous pouvez utiliser addOnCompleterListener ()
pour savoir si la création a réussi ou non:
auth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (!task.isSuccessful()) { Toast.makeText((getApplicationContext(), "Authentication failed: " + task.getException().getMessage(),Toast.LENGTH_SHORT).show();
auth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(CurrentActivity.this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { Toast.makeText(SignupActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show(); // If sign in fails, display a message to the user. If sign in succeeds // the auth state listener will be notified and logic to handle the // signed in user can be handled in the listener. if (!task.isSuccessful()) { Toast.makeText(SignupActivity.this, "Authentication failed." + task.getException(), Toast.LENGTH_SHORT).show(); } else { //Do something here startActivity(new Intent(CurrentActivity.this, RedirectActivity.class)); finish(); } } });
Une addOnCompleterListener ()
lancera FirebaseAuthUserCollisionException
s'il existe déjà un compte avec l'adresse e-mail donnée. Vous pouvez vérifier si l'e-mail est déjà enregistré en suivant le code.
mAuth.createUserWithEmailAndPassword(signup_email, signup_password) .addOnCompleteListener(SignupActivity.this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Signup success Toast.makeText(SignupActivity.this,"Signup Successful!", Toast.LENGTH_SHORT).show(); } else { // If signup fails, and user emial is already registered. if (task.getException() instanceof FirebaseAuthUserCollisionException) { Toast.makeText(SignupActivity.this,"Provided Email Is Already Registered!", Toast.LENGTH_SHORT).show(); } } } });