【问题标题】:Is it possible to send an OTP instead of a link via Firebase Passwordless authentication?是否可以通过 Firebase 无密码身份验证发送 OTP 而不是链接?
【发布时间】:2020-11-07 02:16:10
【问题描述】:

上下文:

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

看起来,Firebase 无密码身份验证会向用户的电子邮件地址发送一个链接,点击该链接后,他们将被重定向。鉴于这是一个小部件,就我而言,重定向到消费者的应用程序是不可能的,因为在 Firebase 控制台中将所述应用程序列入白名单是没有意义的。

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

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

到目前为止我尝试过的:

我已经彻底阅读了文档,尝试实施无密码身份验证,这导致了我的上述结论。由于您无法真正编辑电子邮件模板,我开始觉得这个用例与 Firebase Passwordless auth 的用途不一致。

我在寻找什么:

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

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

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

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

资源:

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

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

【问题讨论】:

    标签: firebase firebase-authentication


    【解决方案1】:

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

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

    不过,这涉及到很多事情,因此您必须自己权衡是否值得付出努力。一个更简单的流程是:

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

    【讨论】:

    • 感谢弗兰克付出的时间和精力!您能否澄清“在其他设备上打开链接”的意思?您是指用户收到通过 PC 发送的电子邮件,然后在手机上点击收件箱中的链接之类的东西吗?这将如何解决问题?因为根据文档,在您单击链接并被重定向之前,您没有通过身份验证吗?
    • 糟糕...抱歉,我在使用电子邮件链接登录和验证电子邮件地址之间搞混了。他们都使用类似的流程,但实际上方法#2 在这种情况下不起作用。它介于我的回答中的第一种方法和在这种情况下创建自定义提供程序之间。除非您想发送短信/短信,这更接近您正在寻找的流程。
    • 一切都好,那么在制作自己的身份验证系统时,是否可以使用firebase自己的邮件服务器?例如,我在后端生成代码,然后通过 firebase 的邮件服务器发送?
    • 不,您必须提供自己的邮件服务器,因为允许您使用我们的邮件服务器将是一个巨大的滥用媒介。常见的解决方案是使用 gmail 或大型 SMTP 提供商之一(搜索它们,因为我不想推荐任何人而不是其他人)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-22
    相关资源
    最近更新 更多