firebase 电子邮件验证网站

Posted

技术标签:

【中文标题】firebase 电子邮件验证网站【英文标题】:firebase email verification web 【发布时间】:2018-06-15 18:52:30 【问题描述】:

我的电子邮件验证有问题。我的错误是“用户为空”,因此它不会发送验证电子邮件,但它确实在控制台中显示了登录 uid,并且我的 console.firebase.google.com 项目显示了已注册的电子邮件。我应该更改什么以便发送电子邮件并且在用户验证他们的电子邮件之前不授予访问权限?我已经阅读了文档,但无法弄清楚。提前谢谢你。

//add create user event
btnSignUp.addEventListener('click', e => 
    //get email and Password
    const email = txtEmail.value;
    const pass = txtPassword.value;
    const auth = firebase.auth();
    const promise = auth.createUserWithEmailAndPassword(email, pass);
    var user = firebase.auth().currentUser;
    user.sendEmailVerification();
    promise.catch(e => console.log(e.message));
);
//Add a realtime listener
firebase.auth().onAuthStateChanged(function(user) 
    if (user.emailVerified) 
        console.log('Email is verified');
        console.log(user);
     else 
        window.location = "index.html";
        firebase.auth().signOut();
        alert("Email is not verified");
    

【问题讨论】:

好的,谢谢。有没有办法让用户在点击电子邮件中的验证链接之前不显示在 Google Firebase 控制台中? 【参考方案1】:

对于Firebase version 9,我目前正在使用-

createUserWithEmailAndPassword(auth, email, password)
  .then((userCredential) => 
    // Signed in 
    const user = userCredential.user;

    sendEmailVerification(user)
      .then(() => 
        // Email verification sent!
        let msg = 'An email verification link has been sent to ' + user.email;
        document.querySelector('.success.email_msg').innerHTML=msg;
      );
  )
  .catch((error) => 
    document.querySelector('.error.reg_error').innerHTML = error.message;
  );

【讨论】:

【参考方案2】:

您不是在等待承诺解决。更新到以下sn-p:

const promise = auth.createUserWithEmailAndPassword(email, pass);
promise.then(user => 
  user.sendEmailVerification();
).catch(error => console.log);

【讨论】:

以上是关于firebase 电子邮件验证网站的主要内容,如果未能解决你的问题,请参考以下文章

如何检查用户是否允许或禁止Facebook身份验证 - Firebase中的电子邮件

Firebase 确认电子邮件未发送

Firebase Auth on Web - 如何为电子邮件/密码登录添加垃圾邮件保护

验证没有 Firebase 身份验证的电子邮件 - Kotlin [重复]

Firebase 电子邮件验证无法正常工作

Expo - Firebase 电子邮件验证