【发布时间】:2019-11-08 19:16:46
【问题描述】:
我设置了我的应用,以便用户无需登录即可使用它。这包括能够保存数据。每个设备/浏览器元组都会生成一个新的匿名用户帐户来存储数据。
我正在添加 (facebook) 登录,以便用户可以确保他们的数据在浏览器和设备之间保持不变。
firebase 文档展示了如何处理用户尝试将其帐户与多个匿名帐户相关联的情况,并推荐了一种合并数据的方法:
https://firebase.google.com/docs/auth/web/account-linking
我对这种方法的问题是它删除了链接的原始帐户,这实际上将第一个帐户从其登录状态中引导出来。
想象一下单个用户的这个流程:
- 登录设备 A 并保存数据
- 登录设备 B 并保存更多数据。
- 在设备 A 上,使用 facebook 开始“登录”流程并最终链接 facebook 凭据。
- 在设备 B 上,他们再次登录/链接 facebook(链接失败,因此我们必须使用替代方法进行追索)。
- 建议的流程会删除设备 A 上生成的原始帐户,他们必须在此设备上再次使用 facebook 登录。
我已经实现了一个不同的过程,它不会导致设备 A 被启动,而是将设备 B 记录到设备 A 上生成的帐户中。我对此流程的问题是我无法从中删除用户数据设备 B 一旦我成功登录到设备 A,因为我在 firebase 上使用访问控制规则,因此用户数据只能由它所属的登录用户修改。
潜在(次优)解决方案:
- 在登录其他帐户之前删除用户数据,但如果在任何时候失败,用户数据就会丢失。
- 成功登录帐户 A 后,我可以退出,登录帐户 B,删除 B 的数据,然后重新登录帐户 A,但这种解决方案似乎很不优雅。
我很困惑为什么 firebase 文档中的示例似乎有这个明显的问题,并且想知道这种情况下的最佳做法是什么。
【问题讨论】:
标签: firebase firebase-authentication