首页 > 解决方案 > 当用户的凭据在后台更改时如何处理离线数据同步?

问题描述

希望每个人都做得很棒!

所以,我处于这种情况,这发生在我个人身上。

我们正在构建一个应用程序,我们首先使其离线。使用 Google 凭据登录后,该应用程序可以在离线模式下运行。

根据https://stackoverflow.com/a/46674020/379235的回答,我们没有等待后端的操作解决,这使它在离线模式下工作。

但是,前几天我在笔记本电脑上更改了我的谷歌密码(但这种情况可能发生在任何社交登录密码更改时)。然后,几个小时后,我在离线模式下(在我的手机上)使用我的应用程序,并在添加数据时显示成功通知。

但是当我上线并重新加载页面时(再次阅读重新加载,因为在 Safari 中,即使您将应用程序添加到主屏幕,每次点击都会将其加载为新会话),我什么也没看到,并认为一切都很好,但事实并非如此吨。

所以发生了什么事?

当页面重新加载时,Firestore 无法访问,因为安全规则不允许它读取/写入数据。

有了这个,作为用户,我的交易在我不知情的情况下丢失了。此外,当在将本地数据写入后端时发生 Firestore 异常时,作为应用程序开发人员,我也失去了对那些本应存储在后端的待处理事务的访问权限。

重申一下,它发生的操作顺序是

  1. 用户来到应用程序并添加到其移动应用程序的主屏幕。
  2. 用户使用 Google 登录名登录应用程序(他们也可以选择使用 Facebook 和 Twitter 登录)。该应用在幕后使用 Firebase 身份验证。
  3. 用户下线。
  4. 用户继续添加数据,应用程序显示成功通知(基于本地写入,来自此处的指导)
  5. 用户可以在其他设备上访问网络并更改他们的 Google 密码(这与他们在第 2 步中使用的 Google 登录名相同)
  6. 用户继续在离线模式下使用应用程序并添加更多数据。用户重新上线并点击应用程序图标(在 iOS Safari 中,这是一个页面重新加载)。
  7. 用户观察到他们的数据没有同步到服务器。
  8. 第 7 步发生时的幕后——
    • Firestore 尝试同步数据并在安全规则上失败(因为已发生第 5 步)。
    • 异常记录在控制台上,应用程序失去了对应该同步到后端的待处理数据的访问权限。

有了这个,我的问题如下

  1. 当用户在离线模式下使用应用程序,但他们的密码(Google、Facebook、Twitter)已更改,用于登录此应用程序时,我该如何处理?
  2. 一旦他们使用更改后的凭据再次登录应用程序,我如何保留他们的数据并与后端同步?

谢谢

标签: iosfirebasegoogle-cloud-firestoremobile-safari

解决方案


推荐阅读