场景:
-
Bob创建了一个带有电子邮件地址的Firebase帐户alice@example.com他不拥有(无论是偶然还是恶意(。
-
Bob创建了几个私有的Firestore记录(例如,用户评论/消息(,这些记录链接到他的用户ID,只有Bob才能读写。
-
爱丽丝试图注册,却发现了她的电子邮件alice@example.com已被占用。我们如何在Alice无法访问Bob的Firestore记录以及Bob无法访问她将继续创建的记录的情况下,为她提供一个链接到她的电子邮件地址的用户帐户?
一些想法:
-
您可以向Alice发送密码重置电子邮件,这将使Bob注销,但随后Alice将看到Bob在登录时创建的记录。
-
您可以使用云功能,1(删除Bob的(未经验证的电子邮件(用户或更改其电子邮件地址2(为Alice创建一个新用户,并设置电子邮件地址验证标志,然后发送密码重置电子邮件。
有更简单的方法吗?
您可以使用一个(或多个!(Firebase的身份验证机制来帮助确定所有权。
-
您可以使用第三方身份验证(FB、Google、Twitter、Github(来帮助澄清电子邮件地址的所有权。(最简单,imo(
-
您可以通过
firebase.auth().currentUser.sendEmailVerification()
验证用户的电子邮件地址https://firebase.google.com/docs/auth/web/passing-state-in-email-actions -
您可以使用电子邮件链接进行注册:https://firebase.google.com/docs/auth/web/email-link-auth
从他们的文档:
通过电子邮件登录有很多好处:
- 对用户进行身份验证的能力,同时验证用户是否是电子邮件地址的合法所有者