Firebase集成Google登录异常:登录Fragment返回RESULT_CANCELED
看起来你已经完成了基础配置,但还是卡在了登录环节,我帮你梳理几个高频踩坑的排查方向,你可以逐一核对:
确认SHA-1指纹完全正确
很多时候问题出在debug/release指纹混淆,或者复制时遗漏字符。你可以通过命令行重新获取debug包的SHA-1:keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android把输出的SHA-1和Firebase控制台中添加的指纹完全对比,包括大小写、空格,确保没有任何差异。如果是release包,要对应使用release keystore的指纹。
核对OAuth 2.0客户端ID
Firebase集成后会在Google Cloud控制台自动生成对应客户端ID,但偶尔会出现同步延迟。你可以打开res/values/google-services.xml,找到client_id字段,然后去Google Cloud控制台的「API和服务」→「凭据」里,确认这个ID和对应Android应用的客户端ID完全一致。获取具体错误日志定位问题
你只提到返回错误,但不同的错误码对应不同的原因。建议在登录回调中打印详细错误信息,比如在OnCompleteListener里添加失败监听:firebaseAuth.signInWithCredential(credential) .addOnCompleteListener(requireActivity(), task -> { if (!task.isSuccessful()) { Log.e("GoogleLoginError", "登录失败详情:", task.getException()); } });比如常见的
12500错误码,就是SHA-1或客户端ID不匹配;10错误码可能是Google Play服务版本过低。检查Gradle依赖兼容性
确保Firebase和Google Play服务的依赖版本兼容,推荐使用Firebase BoM来统一管理版本,避免冲突:// 项目级build.gradle dependencies { classpath 'com.google.gms:google-services:4.4.0' } // 模块级build.gradle dependencies { implementation platform('com.google.firebase:firebase-bom:32.7.0') implementation 'com.google.firebase:firebase-auth' implementation 'com.google.android.gms:play-services-auth' }最后别忘了在模块级build.gradle末尾添加
apply plugin: 'com.google.gms.google-services'(如果是AGP 7.0+,也可以用plugins块声明)。确认包名完全匹配
Firebase控制台注册的应用包名,必须和AndroidManifest.xml里的package属性完全一致,包括大小写(虽然通常都是小写,但不能有任何拼写错误)。更新测试设备的Google Play服务
旧版本的Google Play服务可能不支持最新的Firebase登录API,打开设备的Google Play商店,搜索「Google Play服务」并更新到最新版本。
如果排查完这些问题后还是无法解决,欢迎把具体的错误日志贴出来,这样能更精准地定位问题。
内容的提问来源于stack exchange,提问作者acn4

