使用 Firebase 实现无密码登录的最佳方式

Pan*_*olo 5 javascript web-applications firebase firebase-authentication

我想简化 Firebase 应用程序中的身份验证工作流程,并让用户无需密码即可连接:

  • 与第三方 OAuth 提供商:Facebook、Google 等。

或者

  • 有电子邮件

如果是后者,用户只需填写他们的地址,接收 URL,然后立即登录,而无需输入/记住密码。

每当他们注销或会话超时时,他们都会再次输入电子邮件,并收到一个新链接以开始新会话。

如何使用 Firebase 做到这一点?

我觉得这在客户端是不可能的,那么实现该工作流程的最佳服务器端例程是什么?

Pan*_*olo 7

最后,在花了一些时间弄清楚这一点之后,我很快意识到电子邮件验证过程不能用来解决这个问题:发送此电子邮件的函数只能由已经登录的用户调用(这很有意义)。因此它不能用于登录。


我最终将此工作流程与 Firebase 自定义身份验证结合使用:

  1. CLIENT用户要求登录,他被询问他的电子邮件地址,并被告知他将在提交表单后收到一个完成登录的链接。
  2. SERVER接收电子邮件地址。查找或创建属于该用户的用户 ID,使用此 UID 创建自定义令牌并通过电子邮件发送经过身份验证的链接(例如http://myapp.com/?token=XYZ:)
  3. CLIENT用户通过单击该链接返回应用程序,应用程序可以使用该token参数立即使用登录用户firebase.auth().signInWithCustomToken(token)

看,妈妈,没有密码!

  • Firebase 身份验证现在支持无密码电子邮件链接登录:https://firebase.google.com/docs/auth/web/email-link-auth (5认同)