是否可以通过Firebase无密码身份验证发送OTP而不是链接?

时间:2020-07-17 09:30:17

标签: firebase firebase-authentication

上下文:

我编写了一个应用程序,该应用程序分发了将安装在消费者的Web应用程序(例如对讲机,Hotjar等)上的小部件,并且我想利用无密码身份验证来验证我的用户。

从外观上看,Firebase无密码身份验证会将链接发送到用户的电子邮件地址,单击该链接将被重定向。就我所知,这是一个小部件,因此无法重定向到用户的应用程序,因为在Firebase控制台中将该应用程序列入白名单是没有意义的。

重定向到主应用程序(您将在其中获取小部件的代码)也没有意义,因为用户将在主应用程序而非小部件中通过身份验证。

在我看来,理想的解决方案似乎是发送OTP代码,用户可以将其复制/粘贴到小部件本身的文本字段中。

到目前为止我已经尝试过:

我已经仔细阅读了文档,尝试实现无密码身份验证,从而得出了上述结论。由于您无法真正编辑电子邮件模板,因此我开始觉得此用例与Firebase无密码身份验证的用途不符。

我正在寻找什么:

我想减少用户的登录摩擦,我还想验证他们的电子邮件地址,以便以后可以向他们发送通知/新闻信等。

其他身份验证提供程序(如基于OAuth2的身份验证提供程序)围绕着用户已注册该特定服务这一事实而展开。匿名身份验证允许用户登录,但不能确保每个用户都有唯一的电子邮件地址。电子邮件/密码身份验证具有较高的摩擦力。

我正在寻找一种类似于auth0的无密码身份验证,但是与firebase auth相比,auth0对免费计划的限制更为详细。

任何帮助,建议或指示都会有所帮助!

资源:

Firebase无密码身份验证:https://firebase.google.com/docs/auth/web/email-link-auth

auth0无密码身份验证:https://auth0.com/passwordless/

1 个答案:

答案 0 :(得分:1)

通过阅读Authenticate with Firebase Using Email LinkPassing State in Email Actions上的文档,我认为这不是完全受支持的方案。但是您可以通过以下方式模仿它:

  1. 为电子邮件中的链接设置自己的处理程序页面。
  2. 在该页面上显示链接中的oobCode
  3. 在小部件上设置一个页面,供用户输入代码。
  4. 根据该代码和其他特定于应用的信息重新创建链接。
  5. 通过调用credentialWithLink创建凭据。

尽管这涉及很多,所以您必须自己权衡是否值得付出努力。一个更简单的流程是:

  1. 发送链接。
  2. 让他们在其他设备上打开链接,以验证其帐户。
  3. 在小部件reloads their profile中提供一个按钮,并检查其帐户中的电子邮件地址是否经过验证。