【问题标题】:Firebase Auth: user profile changes are not synced to other devices?Firebase Auth:用户配置文件更改未同步到其他设备?
【发布时间】:2019-05-03 22:31:19
【问题描述】:

场景:

我使用电子邮件提供商使用 Firebase 身份验证登录。我使用以下 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 进行更改之前,我也在另一台设备上登录。在该设备上,即使在终止并重新启动应用程序时,也会显示 用户信息。所有这些都是在我使用Auth.auth().addStateDidChangeListener API 的时候。

只有当我注销并重新登录时,才会刷新用户信息。我猜它使用的是本地缓存的数据,但它没有从服务器或其他什么获取新的用户信息?

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

编辑:我又试了几次,是的,它是 100% 可重现的。

  1. 在两台设备上登录。在屏幕上的某处(或控制台)输出Auth.auth().currentUser.displayName
  2. 在设备 A 上,更改 displayName。当我刷新 UI 时,会显示新名称。当我重新启动应用程序时,会显示新名称。
  3. 在设备 B 上,旧名称仍然显示,即使在杀死并重新启动应用程序之后也是如此。只有当我注销并重新登录时,才会显示新名称。

【问题讨论】:

    标签: swift firebase firebase-authentication


    【解决方案1】:

    最后,我创建了一个新的顶级用户集合,我现在在其中存储用户配置文件数据。使用快照侦听器,在一台设备上更新信息也会在其他设备上更新。太糟糕了,这是必要的,但它确实有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-21
      • 1970-01-01
      • 2018-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多