Я успешно настроил аутентификацию по электронной почте / паролю Firebase с помощью firebase-ui.
var uiConfig = {
signInSuccessUrl: '<?php echo $url; ?>',
signInOptions: [
// Leave the lines as is for the providers you want to offer your users.
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
firebase.auth.FacebookAuthProvider.PROVIDER_ID,
firebase.auth.EmailAuthProvider.PROVIDER_ID
],
// Terms of service url.
tosUrl: '<your-tos-url>'
};
// Initialize the FirebaseUI Widget using Firebase.
var ui = new firebaseui.auth.AuthUI(firebase.auth());
// The start method will wait until the DOM is loaded.
ui.start('#firebaseui-auth-container', uiConfig);
но по соображениям безопасности я хочу, чтобы пользователь подтвердил свой адрес электронной почты. Но из приведенного выше кода он не отправляет пользователю письмо с подтверждением. Итак, я использовал следующий метод, чтобы отправить пользователю письмо с подтверждением, если он / она не подтвердили почту своей учетной записи.
firebase.auth().onAuthStateChanged(function(user) {
if (user && user.uid != currentUid) {
if (firebase.auth().currentUser.emailVerified) {
currentUid = user.uid;
else {
//---- HERE YOU SEND THE EMAIL
firebase.auth().currentUser.sendEmailVerification();
}
Но когда я использовал этот код, он отправляет несколько писем с подтверждением для одной и той же учетной записи. Это означает, что этот метод запускается каждый раз, когда пользователь перезагружает страницу. Было бы действительно здорово, если бы кто-нибудь мог помочь мне определить, отправлено ли проверочное письмо для конкретного пользователя с помощью firebase.
sendEmailVerification()
. Если вы хотите ограничить эту отправку, вам придется реализовать механизм для этого самостоятельно. - person Frank van Puffelen   schedule 14.04.2017sendEmailVerification()
вызывается только в тестовом коде (одно из преимуществ FirebaseUI с открытым исходным кодом заключается в том, что вы можете искать такие вещи самостоятельно), поэтому это не похоже на функцию. Уже есть запрос функции для этого, так что вы можете захотеть перезвонить / голосуйте там. - person Frank van Puffelen   schedule 14.04.2017