当前位置: 首页 > 知识库问答 >
问题:

未发送Firebase WEB电子邮件验证。代码出了什么问题

宰鸿博
2023-03-14

嗯,我已经尝试了多种方法来触发sendeMailVerification()函数。但没有一个成功。医生也帮不上忙。

下面是我将要使用的部分源代码。请让我知道我可以如何纠正这一点。

在我的控制台上,我得到以下错误:

TypeError:无法读取Object.Firebase.auth.OnauthStateChanged.FirebaseUser[as next]中为null的属性“email verified”


        btnSignUpWithGoogle.addEventListener('click', e => {
            var provider = new firebase.auth.GoogleAuthProvider();

            firebase.auth().signInWithPopup(provider).then(function(result) {
            var token = result.credential.accessToken;
            var user = result.user;
          }).catch(function(error) {
            var errorCode = error.code;
            var errorMessage = error.message;
            var email = error.email;
            var credential = error.credential;
            console.log(errorCode);
          });
    });

    btnLogin.addEventListener('click', e => {
      const email = txtEmail.value;
      const pass = txtPassword.value;
      const auth = firebase.auth();

      const promise = auth.signInWithEmailAndPassword(email, pass);
      promise.catch(e => console.log(e.message));

      txtEmail.value = "";
      txtPassword.value = "";
    });

    btnSignUp.addEventListener('click', e => {
      const email = txtEmail.value;
      const pass = txtPassword.value;
      const auth = firebase.auth();

      const promise = auth.createUserWithEmailAndPassword(email, pass);
      promise.catch(e => console.log(e.message));

      txtEmail.value = "";
      txtPassword.value = "";

      const emailVerified = firebaseUser.emailVerified;

      if (!emailVerified){
        firebase.auth().firebaseUser.sendEmailVerification().then(function(){
          alert('Please check your email to verify your Account.');
        });
      } else {
        alert('Your Email has been verified!');
      }

    });

    firebase.auth().onAuthStateChanged(firebaseUser => {
      if (firebaseUser) {
        console.log(firebaseUser);
        console.log('Logged IN!');
        btnLogout.style.visibility = 'visible';
    }
      if (firebaseUser.emailVerified) {
        console.log('Email is verified');
      }
      else {
        console.log('Email is not verified');
        firebaseUser.sendEmailVerification();
      }

    });

共有2个答案

孟雪风
2023-03-14

sendEmailVerification()仅在您已经将电子邮件地址加载到FireBase中时才起作用。

查看下面的代码:https://github.com/aqeelsmith/angularjsdata/blob/master/builds/angulardata/js/services/authentication.js-行82

李博达
2023-03-14

我们能看看所有的代码吗?您确定您的firebase.auth()声明正确吗?

您的身份验证应该如下所示:

const firebaseApp = firebase.initializeApp(firebaseConfig, 'Client');
const firebaseAuth = firebaseApp.auth();

firebaseUser应该有emailVerified将if else语句移动到if firebaseUser内部,如下所示:

firebase.auth().onAuthStateChanged(firebaseUser => {
  if (firebaseUser) {
    console.log(firebaseUser);
    console.log('Logged IN!');
    btnLogout.style.visibility = 'visible';

    if (firebaseUser.emailVerified) {
      console.log('Email is verified');
    }
    else {
      console.log('Email is not verified');
      firebaseUser.sendEmailVerification();
    }

  }

});

console.log(firebaseUser),是怎么说的?

 类似资料:
  • 我正在试验Cognito,但我似乎不知道如何让Cognito向用户发送验证电子邮件,让他们验证他们的电子邮件地址。 这是在我的后端服务器中,我从新用户那里收到了用户名、电子邮件和密码。我正在抑制消息操作,因为我不希望用户收到临时密码。相反,我想将密码设置为他们已经提供给我的密码。 然而,用户从未收到验证其电子邮件地址的电子邮件。在用户池配置中,我在“要验证哪些属性”下选择了“电子邮件”我已经在SE

  • 当我注册一个用户,或单击“单击此处请求另一个”时,不会发送验证邮件,尽管它的回答是“一个新的验证链接已发送到您的电子邮件地址”。我检查了我的和文件,并使用tinker和

  • 大家好抱歉我是AWS的新手, 我有麻烦从AWS发送电子邮件地址。 以下是我的配置详细信息: 1)我已经成功验证了我的电子邮件地址和域名。 2) 同样,我也通过以下策略添加IAM用户 {"语句": [{ "效果":"允许","操作":"ses: SendRawEmail","资源":"*" }]} 3)您可以看到添加邮件地址已验证 但我想我不知道为什么我在尝试发送邮件时会出现以下错误。 我收到以下错

  • 我使用AWS SES服务发送电子邮件与验证的测试电子邮件地址在SES和使用相同的来源。 我正试图将电子邮件发送到其他电子邮件地址,但无法发送。这是给我的错误“电子邮件地址未经验证。以下身份未通过在US-EAST-1地区的检查”。 发送电子邮件的代码参考:https://aws.amazon.com/premiumsupport/knowledge-center/lambda-send-email-

  • 我正在做一个学校项目,我试图在创建帐户时发送一封验证电子邮件,但我不断收到一个身份验证错误,即使我的凭据是正确的。 错误日志: 我尝试了几种不同的身份验证器,但似乎都不起作用!谢谢!

  • 每当我在Firebase中使用电子邮件/密码身份验证提供程序时,提供程序都会在成功注册时发送一个无记名令牌,即使是。是否有一种开箱即用的方法将电子邮件/密码身份验证提供程序配置为在用户验证其电子邮件地址之前不发送无记名令牌(并返回403错误)? 请注意,我知道如何创建用户、登录用户、发送验证电子邮件等。。。使用firebase v9。x通过firebase/auth中的方法创建用户(使用Email