我希望简化Firebase应用中的身份验证工作流程,让用户无需密码即可进行连接:
或
如果是后者,用户只需填写他们的地址,就会收到一个URL,并立即登录,而无需输入/记住密码。
每当他们退出,或者他们的会话超时时,他们都会再次输入他们的电子邮件,并收到一个新链接以开始新会话。
如何使用Firebase执行此操作?
我觉得客户端无法做到这一点,那么实现该工作流程的最佳服务器端例程是什么?
答案 0 :(得分:2)
对于电子邮件部分,您可以: -
使用来自前端的自定义密码,例如: - 时间戳或一些随机字+ timeStamp。并将timeStamp存储在用户的数据库中,以便将来参考会话到期。
要发送会话开始链接,您可以使用验证邮件发送内部链接,并根据需要调整邮件内容。
了解会话何时到期: -
timeKeyRetrieved
PS: - 用于检查用户在线期间用户会话是否已过期。你将不得不使用计时器。每当您的用户上线时,只需检索 AppDelegate 方法中的 timeStamp 或 viewWillAppear:
答案 1 :(得分:2)
最后,在花了一些时间来解决这个问题之后,我很快意识到电子邮件验证过程无法用于解决此问题:发送此电子邮件的功能只能由已登录的用户调用< / em>(这很有道理)。因此,它不能用于登录。
我最终将此工作流程与Firebase自定义身份验证结合使用:
CLIENT
用户要求登录,他被问到了他的电子邮件地址,并告诉他将收到一个链接,以便在提交表单时完成登录。 SERVER
收到电子邮件地址。查找或创建属于该用户creates a custom token with this uid的用户ID,并通过电子邮件发送经过身份验证的链接(例如:http://myapp.com/?token=XYZ
)CLIENT
用户通过点击该链接返回应用,该应用可以使用token
firebase.auth().signInWithCustomToken(token)
参数swift
。看,妈,没有密码!