【问题标题】:How to recover user account if user has deleted the app or changed phone?如果用户删除了应用程序或更换了手机,如何恢复用户帐户?
【发布时间】:2020-08-24 23:19:07
【问题描述】:

我正在使用 Cloud Firestore,我遇到了最上面的问题。我给你做榜样

  1. 用户安装应用程序并使用 Google 登录。我将登录信息保存在设备存储中,因此用户不必每次都登录。它还使用生成的 ID 存储在 Firestore 中。
  2. 用户使用该应用程序并在某一天将其卸载。这会擦除异步存储中的登录信息,丢失授予他访问应用程序的生成 ID。
  3. 有一天他决定重新安装它,让我们说在另一台设备上让它更难。他的个人资料中有各种信息,或者可能是他忘记删除的有效付款计划,他现在想这样做。他点击了 google 登录,因为他是这样做的,但现在个人资料信息消失了,因为另一个帐户是使用另一个生成的 ID 创建的。

如何避免这种情况?我希望应用程序以某种方式记住用户帐户。用户帐户将存储在我的 Firestore 中。

【问题讨论】:

    标签: android firebase react-native google-cloud-firestore firebase-authentication


    【解决方案1】:

    根据docs

    • 对于 Android 和 iOS,默认启用离线持久性。

    这意味着默认情况下,Firestore 会在客户端设备上创建数据库的定位副本。

    用户安装应用并使用 Google 登录。

    所以我假设你已经实现了Firebase authentication with Google

    它还使用生成的 ID 存储在 Firestore 中。

    没有看到“生成的 ID”,很难说它是否是正确的 ID。这种身份验证背后的想法是让您的用户使用 Firebase 登录,无论提供者是什么。此外,如果您想将用户数据保存在 Firestore 中,请将其存储到一个文档中,该文档的 id 是来自身份验证过程的用户 ID。这样,无论提供者是什么,您都将始终将数据存储在其密钥永远不会更改的文档下。

    用户使用该应用程序并有一天将其卸载。这会删除异步存储中的登录信息,丢失授予他访问应用程序的生成 ID。

    确实,如果用户卸载应用程序,所有缓存都会从存储中清除,包括登录信息。话虽如此,请记住,您永远不应该将此类信息存储在磁盘上。使用Firebase authentication时,没有需要存储的登录信息。如果你还没有实现它,我建议你从文档开始。

    有一天他决定重新安装它,假设在另一台设备上让它变得更难。他的个人资料中有各种信息,或者可能是他忘记删除的有效付款计划,他现在想这样做。他点击了 google 登录,因为他是这样做的,但现在个人资料信息消失了,因为另一个帐户是使用另一个生成的 ID 创建的。

    仅当您使用的 ID 类型不同于上述类型时,才会发生这种情况。如果您使用了来自身份验证过程的 ID,则用户第二次尝试唱歌时,即使使用不同的设备,他也会被识别为具有相同数据的同一用户。这样,用户将能够访问具有相同数据的相同文档并重新创建本地缓存。

    【讨论】:

      【解决方案2】:

      我不确定您正在使用哪个框架来创建应用程序,但 firebase sdk 已登录并使用电子邮件和密码创建用户。需要的数据可以保存到 Firestore 上的用户文档中。

      【讨论】:

      • 我正在使用 React Native。我将使用身份验证 SDK,是的,我将保存数据。问题是,一旦保存数据,除非您是帐户的所有者,否则将无法访问配置文件数据。并且该帐户将有一个随机生成的 id。如何知道重新安装应用的用户是否已经注册?
      • 当您登录时,您应该会自动从 Firestore 获取数据。 //在您的用户集合中,您应该有与用户的 uid 同名的文档。
      猜你喜欢
      • 2011-10-12
      • 1970-01-01
      • 2018-02-22
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      相关资源
      最近更新 更多