gpt4 book ai didi

firebase - 需要有关在生产应用程序中添加身份验证提供程序的建议 - Firebase

转载 作者:行者123 更新时间:2023-12-02 08:04:51 25 4
gpt4 key购买 nike

我一周前推出了一个应用程序,现在有几百个用户。我使用的唯一身份验证提供商是 gmail,我的数据库结构如下所示:

- AllUsersInfo:
- $userEmail // example: "blah@gmail.com"
- "uid": $userUID // example: "1234567890"
- "name": $userDisplayName // example: "John Doe"

- AllUsersData
- $userUID // example: "1234567890"
- "userData": { ... }

基本上,我创建了一个节点 (AllUsersInfo) 来仅将用户的电子邮件作为键,并将该用户的 uid 和名称作为值。另一个节点 (AllUsersData) 实际上包含他们在应用程序中生成的每个用户的数据作为值,键是他们的 uid。我将这两个节点分开,因为顶部的节点是轻量级的并且有利于搜索,而底部的节点则更加安全并且具有更多的数据。

问题:

现在我正在添加 Facebook 身份验证,并且正在努力了解如何保持数据库结构的完整性。问题是,如果某人之前使用 Gmail 登录,现在又使用 Facebook 注册,那么他们的 Facebook 帐户的电子邮件可能与他们之前注册的 Gmail 相同。这会导致 AllUsersInfo 节点重叠,因为 Firebase 中的键必须是唯一的。

我正在努力弄清楚如何处理这些重叠的案例。如果我使用新名称和 uid 覆盖 AllUsersInfo 节点中电子邮件的先前数据,则会导致旧用户的身份验证无法搜索。如果我更改 AllUsersInfo 的结构以允许多个 uid 和名称,则会导致一些向后兼容性问题。

有人可以帮我找到一个好的解决方案来解决这个潜在的数据库结构重构吗?

最佳答案

我针对这个问题以及 Facebook 用户可能甚至没有电子邮件(他们使用电话号码创建帐户)的另一个问题提出的解决方案如下:

通过 Facebook(或 Gmail)验证用户身份后,检查他们的电子邮件是否已在数据库中,或者是否没有电子邮件(电话号码情况),在这种情况下,向他们显示一个屏幕,要求他们输入要使用的电子邮件使用这个新帐户。

不是最好的解决方案,但它解决了这两个问题。

关于firebase - 需要有关在生产应用程序中添加身份验证提供程序的建议 - Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43774603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com