Firebase Auth Linking合并帐户问题

时间:2019-11-08 19:16:46

标签: firebase firebase-authentication

我已设置我的应用程序,以便用户无需登录即可使用它。这包括能够保存数据。每个设备/浏览器元组都会生成一个新的匿名用户帐户来存储数据。

我正在添加(facebook)登录名,以便用户可以确保其数据在浏览器和设备之间持久存在。

firebase文档显示了如何处理用户尝试从多个匿名帐户链接其帐户的情况,并建议了一种合并数据的方法:

firebase docs recommended approach https://firebase.google.com/docs/auth/web/account-linking

这种方法的问题在于,它会删除链接的原始帐户,该帐户实际上会从登录状态中引导第一个帐户。

想象一个用户的流程:

  1. 登录设备A并保存数据
  2. 登录设备B并保存更多数据。
  3. 在设备A上,开始使用Facebook进行“登录”流程并最终链接了Facebook凭据。
  4. 他们在设备B上再次登录/链接Facebook(链接失败,因此我们必须使用其他方法进行追索)。
  5. 建议的过程删除设备A上生成的原始帐户,并且他们必须在该设备上再次使用Facebook登录。

我实现了一个不同的过程,该过程不会导致设备A被引导,而是将设备B登录到设备A上生成的帐户中。我的流程问题是我无法从其中删除用户数据成功登录设备A后,因为我正在使用Firebase上的访问控制规则,所以该设备B只能由该用户所属的已登录用户修改。

enter image description here

潜在(次优)解决方案:

  • 删除用户数据,然后再登录另一个帐户,但是如果它在任何时候失败,则会丢失用户数据。
  • 成功登录到帐户A后,我可以注销,登录到帐户B,删除B的数据,然后重新登录到帐户A,但是这种解决方案似乎不太合理。

我对为什么Firebase文档中的示例似乎有这个明显的问题感到困惑,并想知道这种情况的最佳实践是什么。

1 个答案:

答案 0 :(得分:0)

我没有任何回应,但是我实施了我认为是“足够优雅”的解决方案。

成功登录另一个帐户后,我没有删除prevUser的帐户和数据,而是删除了该帐户: enter image description here

我实现了一个firebase函数来处理孤立用户数据的删除: enter image description here