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

为什么Firebase-Email-Verification不起作用?

周伟泽
2023-03-14
$("#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')
       }
    })

共有2个答案

云季萌
2023-03-14

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

禹智渊
2023-03-14

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

  1. 他们的身份证自动刷新,每小时刷新一次
  2. 当用户注销并再次登录
  3. 当您通过在其用户配置文件上调用<code>reload</code>强制刷新应用程序代码中的ID令牌时

一旦发生这些情况,用户配置文件将包含来自服务器的最新信息,包括用户的电子邮件验证状态。

另请参见:

    < li>Angular firebase电子邮件验证验证后为假 < Li > Android Firebase AuthStateListener电子邮件已验证 < li >我可以在不注销的情况下获得更新的电子邮件验证吗? < li >单击电子邮件验证链接firebase后user.emailVerified不变
 类似资料:
  • 问题内容: 我正在尝试从JSON网址获取集合。骨干网确实发送了请求并得到了响应,但是在它之后的集合中没有: 这是我的JavaScript: 响应中的JSON 响应中的Content-Type HTTP标头为。 为什么不将其加载到集合中?JSON是否正确? 一些更多的代码: 问题答案: 是异步的。尝试 要么 要么

  • 问题内容: 我有三部分字符串,每个部分用 符号分隔 。例如, 现在,当我使用这样的方法拆分它时: 它包含整个字符串作为单个元素的数组。 但是当我使用这个: 它完美的作品是什么,我想这意味着 现在的数组包含,并分别对指数0,1和2。 我想知道为什么第一次使用时不起作用,因为我在使用 问题答案: 因为字符是在正则表达式中用来标记行尾的保留令牌。因此,您必须使用进行 转义。

  • 问题内容: 我现在有点困惑。我尝试过: 并得到: 但是,我想要: 我的代码有什么问题? 问题答案: 您没有将其分配给。字符串是 不可变的 。 您需要将其分配回。

  • 问题内容: 我正在尝试这样做: 第一行有效: 但是接下来的两个: 和 只是输出 为什么? 问题答案: 因为你需要加入同,只是列出了内容直接,内容不具有完整路径。 范例- 如果未提供完整路径,则在当前目录中搜索,因此当您给出时,将获得正确的列表。 范例- 假设某个文件夹-具有文件-并在其中。 当您执行-时,返回的列表类似于- 即使您在其中提供绝对路径,列表中返回的文件也将具有指向目录的相对路径。您将

  • 我想知道两次当地约会之间的时间。我使用了下面的代码: 我有以下错误:

  • 我有一个用户和角色的存储库。两个实体在DB中有不同的表。我尝试加载像或相同的想法,但使用Spring数据与LoadGraph。但是当我调用时,我得到了异常。请帮我解决这个问题。谢谢你。 存储库: 例外: WARN: HHH000104: firstResult/max使用集合读取指定的结果;在内存中应用!Hibernate:选择不同的user0_. id作为id1_1_0_,role1_user_