Firebase Auth - avec e-Mail et Mot de passe - Vérifier utilisateur déjà enregistré
Je veux vérifier lorsqu'un utilisateur tente de vous inscrire avec createUserWithEmailAndPassword() dans Firebase méthode d'Authentification de l'utilisateur, cet utilisateur est déjà enregistré avec mon application.
Lorsque l'utilisateur tente de créer un utilisateur avec la même adresse e-mail, la tâche de la réponse sera "Réponse: L'adresse email est déjà utilisé par un autre compte."
mFirebaseAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(this,newOnCompleteListener<AuthResult>(){@Overridepublicvoid onComplete(@NonNullTask<AuthResult> task){if(task.isSuccessful()){//User registered successfully}else{Log.i("Response","Failed to create user:"+task.getException().getMessage());}}});
Est-il possible de vérifier l'utilisateur est déjà inscrit, sans avoir à envoyer le mot de passe? Pour cela, vous devez utiliser fetchProvidersForEmail (String email) de la méthode. Mais, maintenant, c'est avoir un problème. Je n'étais pas en mesure de trouver la bonne solution uniquement par email. Si vous trouvez merci de mettre à jour la réponse. Sûr que je vais mettre à jour ce à quoi j'ai besoin, comme dans Gmail, tapez une adresse de messagerie, si le courrier électronique est disponible puis passez le mot de passe Merci pour l'aide!!!!!!!!!!!!!...+1
Pour détecter si un utilisateur avec cette adresse email existe déjà, vous pouvez détecter lors de l'appel à createUserWithEmailAndPassword () échoue avec auth/email-already-in-use. Je vois que @Srinivasan viens de poster une réponse pour cela.
Tout d'abord, vous devez vous assurer que vous avez la restriction activé dans Firebase console (Compte et l'adresse email de paramètres). Jetez un oeil à @Srinivasan de réponse.
Ensuite, dans votre code java:
firebaseAuthenticator.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this,newOnCompleteListener<AuthResult>(){@Overridepublicvoid onComplete(@NonNullTask<AuthResult> task){if(!task.isSuccessful()){if(task.getException()instanceofFirebaseAuthUserCollisionException){Toast.makeText(SignUpActivity.this,"User with this email already exist.",Toast.LENGTH_SHORT).show();}}else{
sendVerificationEmail();
startActivity(newIntent(SignUpActivity.this,DetailsCaptureActivity.class));}//...}});
C'est là le truc qui se passe:
if(task.getException()instanceofFirebaseAuthUserCollisionException){Toast.makeText(SignUpActivity.this,"User with this email already exist.",Toast.LENGTH_SHORT).show();
Plusieurs exceptions peuvent être levées lors de l'enregistrement d'un utilisateur avec l'email et le mot de passe, mais celui qui nous intéresse est la FirebaseAuthUserCollisionException. Comme son nom l'indique, cette exception est levée si l'email existe déjà. Si l'exception est une instance de cette classe, de laisser l'utilisateur de savoir.
J'aime cette réponse et @Frank , mais pourriez-vous expliquer - Pourquoi êtes-vous de la déclaration d'une matrice booléenne ? au lieu d'un seul booléen? merci ^^, je pense que c'était juste une correction à partir de l'android studio pour en déclarant une variable finale et de l'utiliser dans une méthode anonyme, aucun besoin d'utiliser un tableau de booléens autre que cette raison là
J'ai été à la recherche dans ce genre de condition où l'on peut détecter si l'utilisateur existe ou pas et effectuer l'inscription et de connexion. fetchProvidersForEmail est la meilleure option à l'heure actuelle. J'ai trouvé cette tutoriel. Espérons qu'il vous aide aussi!
Ajouter le code ci-dessous pour MainActivity.java fichier.Lorsque l'utilisateur de tenter de s'inscrire avec la même adresse de courriel, un message "L'adresse email est déjà utilisé par un autre compte" apparaît comme un Toast
mAuth.createUserWithEmailAndPassword(email,password).addOnCompleteListener(newOnCompleteListener<AuthResult>(){@Overridepublicvoid onComplete(@NonNullTask<AuthResult> task){if(!task.isSuccessful()){Toast.makeText(MainActivity.this, task.getException().getMessage(),Toast.LENGTH_SHORT).show();}if(task.isSuccessful()){Toast.makeText(MainActivity.this,"Sign up successfull",Toast.LENGTH_SHORT).show();}}});
Lorsque l'utilisateur tente de créer un utilisateur avec la même adresse e-mail, la tâche de la réponse sera "Réponse: L'adresse email est déjà utilisé par un autre compte."
Pour cela, vous devez utiliser fetchProvidersForEmail (String email) de la méthode. Mais, maintenant, c'est avoir un problème. Je n'étais pas en mesure de trouver la bonne solution uniquement par email. Si vous trouvez merci de mettre à jour la réponse.
Sûr que je vais mettre à jour ce à quoi j'ai besoin, comme dans Gmail, tapez une adresse de messagerie, si le courrier électronique est disponible puis passez le mot de passe
Merci pour l'aide!!!!!!!!!!!!!...+1
OriginalL'auteur Srinivasan
Pour détecter si un utilisateur avec cette adresse email existe déjà, vous pouvez détecter lors de l'appel à
createUserWithEmailAndPassword ()
échoue avecauth/email-already-in-use
. Je vois que @Srinivasan viens de poster une réponse pour cela.Alternativement, vous pouvez détecter qu'une adresse e-mail est déjà utilisée par l'appel de
fetchSignInMethodsForEmail()
(précédemment appeléfetchProvidersForEmail()
).OriginalL'auteur Frank van Puffelen
Tout d'abord, vous devez vous assurer que vous avez la restriction activé dans Firebase console (Compte et l'adresse email de paramètres). Jetez un oeil à @Srinivasan de réponse.
Ensuite, dans votre code java:
C'est là le truc qui se passe:
Plusieurs exceptions peuvent être levées lors de l'enregistrement d'un utilisateur avec l'email et le mot de passe, mais celui qui nous intéresse est la
FirebaseAuthUserCollisionException
. Comme son nom l'indique, cette exception est levée si l'email existe déjà. Si l'exception est une instance de cette classe, de laisser l'utilisateur de savoir.OriginalL'auteur ojonugwa ochalifu
Comme une pratique de @Frank réponse ici est le code de l'aide
fetchProvidersForEmail()
merci ^^, je pense que c'était juste une correction à partir de l'android studio pour en déclarant une variable finale et de l'utiliser dans une méthode anonyme, aucun besoin d'utiliser un tableau de booléens autre que cette raison là
OriginalL'auteur Dasser Basyouni
J'ai été à la recherche dans ce genre de condition où l'on peut détecter si l'utilisateur existe ou pas et effectuer l'inscription et de connexion.
fetchProvidersForEmail
est la meilleure option à l'heure actuelle. J'ai trouvé cette tutoriel. Espérons qu'il vous aide aussi!OriginalL'auteur Akshay Taru
OriginalL'auteur Annemarie Rinyu
Ajouter le code ci-dessous pour MainActivity.java fichier.Lorsque l'utilisateur de tenter de s'inscrire avec la même adresse de courriel, un message "L'adresse email est déjà utilisé par un autre compte" apparaît comme un Toast
OriginalL'auteur Md Nakibul Hassan
Vous n'avez pas à faire quoi que ce soit car le backend de Firebase va faire le travail.
Sauf si vous faites référence à reauthenticating de l'application.
Prendre un scénario, par exemple, w
OriginalL'auteur charlinagnes