sendEmailVerification 与 sendSignInLinkToEmail 使用 firebase 进行电子邮件验证

问题描述

我正在尝试对现有项目设置电子邮件验证。我偶然发现了两个不同的文档,它们为此使用了两种不同的方法,但仍然遵循相同的流程

  1. sendEmailVerification
  2. sendSignInLinkToEmail

我看到的唯一区别是我们必须在使用 ActionCodeSettings 时专门创建 sendSignInLinkToEmail 对象,以便指定它用于验证,而使用 {{ 时不需要这样做1}}。

我假设,文档解释的主要区别在于,一个用于用户进行身份验证,另一个用于验证用户。尽管 this security StackExchange post 帮助我了解了一点差异,但我仍然对它在用户登录体验的上下文中如何区分感到困惑

解决方法

一个用于身份验证,另一个用于验证电子邮件。

sendEmailVerification 是一种一次性事件,用于验证用户的电子邮件地址是否有效。它在 User object 中设置 emailVerified 值。一旦电子邮件被验证,你就不会再打电话给它。这是在注册过程中使用的。

sendSignInLinkToEmail 是一种身份验证方法,允许用户通过单击通过电子邮件发送给他们的链接进行登录,而不是输入电子邮件/密码或通过联合帐户登录。如果这是用户首选的身份验证方法,则每次用户想要登录时都会调用此方法。