Военнослужащих подтверждение по электронной почте не отправляются
Я успешно настроил аутентификацию Firebase по электронной почте / паролю, но по соображениям безопасности я хочу, чтобы пользователь подтвердил свою электронную почту. На сайте Firebases написано:
Когда пользователь регистрируется с использованием адреса электронной почты и пароля, отправляется электронное письмо с подтверждением для подтверждения его адреса электронной почты.
Но когда я регистрируюсь, я не получаю подтверждение по электронной почте.
Я искал и могу найти только код для отправки электронной почты сброса пароля, но не код для отправки подтверждение по электронной почте.
Я посмотрел здесь:
Https://firebase.google.com/docs/auth/ios/manage-users#send_a_password_reset_email
Кто-нибудь знает, как я могу это сделать?
4 ответа:
Я заметил, что новый Firebase email authentication docs не задокументирован должным образом.
firebase.auth().onAuthStateChanged(function(user) { user.sendEmailVerification(); });
Обратите внимание, что:
- Вы можете только отправлять проверку электронной почты пользователям объекта, который вы создали с помощью метода Email & Password createUserWithEmailAndPassword
- только после того, как вы подписали пользователями в подлинности государства, военнослужащих вернутся обещание объекта авт.
- старый метод onAuth был изменен на onAuthStateChanged .
Чтобы проверить, проверена ли электронная почта:
firebase.auth().onAuthStateChanged(function(user) { if (user.emailVerified) { console.log('Email is verified'); } else { console.log('Email is not verified'); } });
После создания пользователя возвращается объект пользователя, в котором можно проверить, была ли проверена электронная почта пользователя.
Когда пользователь не был проверен, вы можете запустить метод sendEmailVerification на самом объекте пользователя.
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); });
Вы также можете проверить, прослушивая AuthState, проблема со следующим методом заключается в том, что с каждым новым сеансом (путем обновления страницы), отправляется новое письмо.
firebase.auth().onAuthStateChanged(function(user) { user.sendEmailVerification(); });
Вы можете отправить проверочное письмо и проверить, было ли оно проверено следующим образом в 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] } };