Google Workspace修改邮箱后Firebase Auth读取旧用户信息如何解决?
问题根因
- Firebase Auth 侧的用户 Profile 为独立存储,不会自动同步 Google Workspace 等第三方身份提供商的信息变更。用户修改 Workspace 邮箱后,Google 侧账号信息已更新,但 Firebase 仅会在首次绑定 Google 账号时拉取一次用户信息,后续无主动触发同步操作就会一直保留历史数据。
- 安卓端 Firebase SDK 会在本地缓存
currentUser对象的所有属性,即便 Firebase 后端信息已更新,客户端未主动触发刷新的情况下,读取到的仍是本地缓存的旧数据。
修复责任判定
该问题不需要管理员/Google Workspace 侧做额外配置,仅需应用侧调整逻辑即可完全修复。
修复方案
登录流程新增信息同步逻辑
在用户完成谷歌账号登录、拿到最新的账号信息后,主动同步到 Firebase 用户体系中,同时刷新本地缓存,示例代码如下:
val googleAccount = // 登录流程获取到的GoogleSignInAccount实例,包含最新账号信息 val cred = GoogleAuthProvider.getCredential(googleAccount.idToken, null) FirebaseAuth.getInstance().signInWithCredential(cred) .addOnSuccessListener { authResult -> val firebaseUser = authResult.user ?: return@addOnSuccessListener // 更新用户名称、头像 val profileUpdate = UserProfileChangeRequest.Builder() .setDisplayName(googleAccount.displayName) .setPhotoUri(googleAccount.photoUrl) .build() firebaseUser.updateProfile(profileUpdate) .addOnSuccessListener { // 更新用户邮箱,刚登录完成的会话状态满足更新邮箱的安全校验要求 firebaseUser.updateEmail(googleAccount.email) // 强制刷新本地缓存和idToken firebaseUser.reload() firebaseUser.getIdToken(true) } }
日常场景补全刷新逻辑
可在应用冷启动、用户进入个人中心等场景主动调用 FirebaseAuth.getInstance().currentUser?.reload() 刷新本地缓存,避免用户中途修改账号信息后长时间不同步。
内容的提问来源于stack exchange,提问作者rosghub
相关产品推荐
相关产品推荐

