【发布时间】: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.photoURL 和Auth.auth().currentUser.displayName 渲染用户名和头像时,一切都按预期工作。完全没问题。
但是,在我对 photoURL 和 displayName 进行更改之前,我也在另一台设备上登录。在该设备上,即使在终止并重新启动应用程序时,也会显示 旧 用户信息。所有这些都是在我使用Auth.auth().addStateDidChangeListener API 的时候。
只有当我注销并重新登录时,才会刷新用户信息。我猜它使用的是本地缓存的数据,但它没有从服务器或其他什么获取新的用户信息?
我做错了吗?应用启动时是否需要强制刷新?
编辑:我又试了几次,是的,它是 100% 可重现的。
- 在两台设备上登录。在屏幕上的某处(或控制台)输出
Auth.auth().currentUser.displayName。 - 在设备 A 上,更改 displayName。当我刷新 UI 时,会显示新名称。当我重新启动应用程序时,会显示新名称。
- 在设备 B 上,旧名称仍然显示,即使在杀死并重新启动应用程序之后也是如此。只有当我注销并重新登录时,才会显示新名称。
【问题讨论】:
标签: swift firebase firebase-authentication