Firebase Auth:用户配置文件更改是否未同步到其他设备?

时间:2019-05-03 22:31:20

标签: swift firebase firebase-authentication

场景:

我已使用电子邮件提供商使用Firebase Auth登录。我使用以下Swift代码更改了用户的photoURL和displayName:

let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.photoURL = someURL
changeRequest?.displayName = someName
changeRequest?.commitChanges { (error) in
  // ...
}

从那时起,当我使用Auth.auth().currentUser.photoURLAuth.auth().currentUser.displayName来呈现用户的名称和头像时,一切都按预期工作。没问题。

但是,在更改photoURL和displayName之前,我还登录了另一台设备。并且在该设备上,即使杀死并重新启动应用程序,也会显示 old 用户信息。同时,我也在使用Auth.auth().addStateDidChangeListener API。

仅当我注销并重新登录时,才会刷新用户信息。我想它使用的是本地缓存的数据,但不是从服务器或其他设备中获取新的用户信息?

我做错什么了吗?应用启动时是否需要强制刷新?

编辑:我已经尝试了几次,是的,它是100%可复制的。

  1. 登录两台设备。在屏幕上的某个地方(或控制台)输出Auth.auth().currentUser.displayName
  2. 在设备A上,更改displayName。刷新UI时,将显示新名称。重新启动应用程序时,会显示新名称。
  3. 在设备B上,即使在终止并重新启动应用程序之后,仍会显示旧名称。仅当我注销并重新登录时,新名称才最终显示出来。

1 个答案:

答案 0 :(得分:0)

最后,我创建了一个新的顶级Users集合,现在在其中存储用户个人资料数据。使用快照侦听器,在一台设备上更新信息也会在另一台设备上更新信息。太可惜了,这是必须的,但它可以工作。