J'ai configuré l'authentification de messagerie/mot de passe Firebase avec succès, mais pour des raisons de sécurité, je souhaite que l'utilisateur confirme son courrier électronique. On dit sur le site de Firebases:
Lorsqu'un utilisateur s'inscrit à l'aide d'une adresse électronique et d'un mot de passe, un courrier électronique de confirmation lui est envoyé pour vérifier son adresse électronique.
Mais lorsque je m'inscris, je ne reçois pas d'email de confirmation.
J'ai regardé et je ne trouve qu'un code pour l'envoi du courrier électronique de réinitialisation du mot de passe, mais pas un code pour l'envoi de la confirmation par courrier électronique.
J'ai regardé ici:
https://firebase.google.com/docs/auth/ios/manage-users#send_a_password_reset_email
quelqu'un at-il un indice sur la façon dont je peux le faire?
J'ai remarqué que la nouvelle documentation d'authentification de la messagerie Firebase n'est pas correctement documentée.
firebase.auth().onAuthStateChanged(function(user) {
user.sendEmailVerification();
});
Notez que:
Pour vérifier si le courrier électronique est vérifié:
firebase.auth().onAuthStateChanged(function(user) {
if (user.emailVerified) {
console.log('Email is verified');
}
else {
console.log('Email is not verified');
}
});
Après la création d'un utilisateur, un objet Utilisateur est renvoyé, dans lequel vous pouvez vérifier si le courrier électronique de l'utilisateur a été vérifié ou non.
Lorsqu'un utilisateur n'a pas été vérifié, vous pouvez déclencher la méthode sendEmailVerification sur l'objet utilisateur lui-même.
firebase.auth()
.createUserWithEmailAndPassword(email, password)
.then(function(user){
if(user && user.emailVerified === false){
user.sendEmailVerification().then(function(){
console.log("email verification sent to user");
});
}
}).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
console.log(errorCode, errorMessage);
});
Vous pouvez également vérifier en écoutant AuthState que le problème avec la méthode suivante est qu’à chaque nouvelle session (en actualisant la page), un nouveau courrier électronique est envoyé.
firebase.auth().onAuthStateChanged(function(user) {
user.sendEmailVerification();
});
Vous pouvez envoyer un email de vérification et vérifier si a été vérifié comme suit dans AuthListener:
mAuthListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user != null) {
//---- HERE YOU CHECK IF EMAIL IS VERIFIED
if (user.isEmailVerified()) {
Toast.makeText(LoginActivity.this,"You are in =)",Toast.LENGTH_LONG).show();
}
else {
//---- HERE YOU SEND THE EMAIL
user.sendEmailVerification();
Toast.makeText(LoginActivity.this,"Check your email first...",Toast.LENGTH_LONG).show();
}
} else {
// User is signed out
Log.d(TAG, "onAuthStateChanged:signed_out");
}
// [START_EXCLUDE]
updateUI(user);
// [END_EXCLUDE]
}
};
si vous utilisez la compilation "com.google.firebase: firebase-auth: 9.2.0" et la compilation "com.google.firebase: firebase-core: 9.2.0", la méthode sendEmailVerification () ne sera pas résolue avant la mise à jour. à 9.8.0 ou plus. Il a perdu la plupart du temps avant que je l'ai compris.