Email di conferma Firebase non inviata

Ho impostato correttamente l’autenticazione email / password Firebase, ma per ragioni di sicurezza voglio che l’utente confermi la sua email. Dice sul sito web Firebases:

Quando un utente si registra utilizzando un indirizzo email e una password, viene inviata un’email di conferma per verificare il proprio indirizzo email.

Ma quando mi iscrivo, non ricevo un’email di conferma.

Ho cercato e posso trovare solo un codice per inviare l’email di reimpostazione della password, ma non un codice per l’invio della conferma via email.

Ho guardato qui:

https://firebase.google.com/docs/auth/ios/manage-users#send_a_password_reset_email

qualcuno ha idea di come posso farlo?

Ho notato che i nuovi documenti di autenticazione e-mail di Firebase non sono adeguatamente documentati.

firebase.auth().onAuthStateChanged(function(user) { user.sendEmailVerification(); }); 

Prendi nota che:

  1. Puoi inviare e-mail di verifica solo agli utenti object che hai creato utilizzando il metodo Email & Password createUserWithEmailAndPassword
  2. Solo dopo aver firmato gli utenti nello stato autenticato, Firebase restituirà una promise dell’object auth.
  3. Il vecchio metodo onAuth è stato modificato in onAuthStateChanged .

Per verificare se l’email è stata verificata:

 firebase.auth().onAuthStateChanged(function(user) { if (user.emailVerified) { console.log('Email is verified'); } else { console.log('Email is not verified'); } }); 

Puoi inviare email di verifica e verificare se è stato verificato come segue in 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] } }; 

Dopo la creazione di un utente viene restituito un object Utente, in cui è ansible verificare se l’e-mail dell’utente è stata verificata o meno.

Quando un utente non è stato verificato, è ansible triggersre il metodo sendEmailVerification sull’object utente stesso.

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

È anche ansible controllare ascoltando AuthState, il problema con il seguente metodo è che, con ogni nuova sessione (aggiornando la pagina), viene inviata una nuova e-mail.

 firebase.auth().onAuthStateChanged(function(user) { user.sendEmailVerification(); }); 

se utilizzi la compilazione “com.google.firebase: firebase-auth: 9.2.0” e compili “com.google.firebase: firebase-core: 9.2.0” il metodo sendEmailVerification () non verrà risolto finché non aggiorni a 9.8.0 o superiore. Ha perso la maggior parte del tempo prima che me ne rendessi conto.