You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Firebase实现Google登录Activity时出现4处错误求解决

错误修复方案

4个错误的具体修复如下:

  • 错误1:变量重名导致未初始化异常
    在firebaseAuthWithGoogle方法中,声明的局部变量auth和全局的FirebaseAuth实例auth重名,代码执行时会优先调用还未完成赋值的局部变量,直接触发报错。
    修复代码:
// 替换原有val auth = auth.signInWithCredential(credential).await()行
val authResult = auth.signInWithCredential(credential).await()
val firebaseUser = authResult.user
  • 错误2:空安全调用缺失导致空指针风险
    构造User实例时,firebaseUser.photoUrl可能为null,直接调用toString()会触发空指针异常,同时User类第三个参数imageUrl是不可空String类型,需要补充空处理逻辑。
    修复代码:
val user = User(
    uid = firebaseUser.uid,
    displayName = firebaseUser.displayName,
    imageUrl = firebaseUser.photoUrl?.toString() ?: ""
)
  • 错误3:Firestore异步任务未正确配合协程使用
    UserDao的addUser方法中,直接调用usersCollection.document(user.uid).set(it)返回的是Task对象,没有配合协程调用await(),任务执行状态无法追踪,也可能出现内存泄漏问题。
    修复代码:
GlobalScope.launch(Dispatchers.IO) {
    usersCollection.document(user.uid).set(it).await()
}

补充说明:生产环境不推荐直接使用GlobalScope,建议替换为lifecycleScope(Activity场景)或者viewModelScope,避免页面销毁后后台任务仍在执行导致内存泄漏。

  • 错误4:startActivityForResult方法已废弃
    当前使用的startActivityForResult在新版AndroidX库中已被官方废弃,建议替换为Activity Result API实现:
    首先在Activity中声明启动器:
private val signInLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
    if (result.resultCode == RESULT_OK) {
        val task = GoogleSignIn.getSignedInAccountFromIntent(result.data)
        handleSignInResult(task)
    }
}

再修改signIn方法:

private fun signIn() {
    val signInIntent = googleSignInClient.signInIntent
    signInLauncher.launch(signInIntent)
}

修改完成后可以删除原来的onActivityResult重写代码。

额外校验项

  1. 确认Firebase控制台已经正确配置应用SHA-1签名、开启了Google登录授权,且已下载最新的google-services.json放到项目app目录下
  2. 确认项目build.gradle已正确引入Firebase Auth、Firebase Firestore、Google Play服务登录相关依赖
  3. 确认已添加协程扩展依赖org.jetbrains.kotlinx:kotlinx-coroutines-play-services,否则await()方法无法正常调用

内容的提问来源于stack exchange,提问作者Tanmay Agarwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:36:02