【问题标题】:Why Firebase-Email-Verification doesn't work?为什么 Firebase-Email-Verification 不起作用?
【发布时间】:2021-05-17 01:25:52
【问题描述】:
$("#btn1").on('click', function(e) {
e.preventDefault(); // <== disable form submit

const email = signupForm['signup-email'].value;
const password = signupForm['signup-password'].value;


// sign up the user & add firestore data
const auth = firebase.auth();

const promise = auth.createUserWithEmailAndPassword(email, password);
promise.then(user => {
  user = firebase.auth().currentUser;
  user.sendEmailVerification();
}).catch(error => console.log);

});


$("#btn2").on('click', function(e) {
  e.preventDefault(); // <== disable form submit


  var user = firebase.auth().currentUser;

if (user.emailVerified) {
  // email is verified.
  console.log("email is verified")
} else {
  // email is not verified.
  console.log("email is not verified")
}
  
  });

我希望我的网站在用户输入电子邮件和密码后向用户发送电子邮件。

在我的代码中,user.sendEmailVerification(); 工作正常,用户会收到一封电子邮件。

如果用户验证他的电子邮件并单击 btn2,控制台应该打印“电子邮件已验证”,但这不会发生。控制台总是打印“电子邮件未验证”。我也试过firebase.auth().onAuthStateChanged的方法,但还是一样。

var user = firebase.auth().currentUser;
 firebase.auth().onAuthStateChanged(user => {
      if(user.emailVerified){ 
        console.log('email is verified')
       }else{
           console.log('email not verified')
       }
    })

【问题讨论】:

    标签: javascript firebase firebase-authentication email-verification


    【解决方案1】:

    验证电子邮件地址是在带外进行的,通常在同一浏览器的另一个选项卡中或完全在另一个应用程序中进行。这意味着您的应用程序代码不会立即知道用户配置文件的更新,而只会在以下情况之一发生时:

    1. 他们的 ID 令牌会自动刷新,每小时更新一次。
    2. 当用户注销并再次登录时。
    3. 当您通过调用 reload on their user profile 强制刷新应用程序代码中的 ID 令牌时。

    一旦发生上述任何一种情况,用户个人资料将包含来自服务器的最新信息,包括用户的电子邮件验证状态。

    另见:

    【讨论】:

      【解决方案2】:

      在身份验证过程中,您被重定向到身份验证服务器,然后返回页面。 onAuthStageChange 是该重定向的观察者,您不需要触发事件,因为它是实时事件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-28
        • 2015-12-27
        • 2022-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-16
        • 1970-01-01
        相关资源
        最近更新 更多