Flutter应用集成Firebase Auth时Google登录失败(PlatformException 12500)求助
解决Flutter Firebase Google登录的PlatformException 12500错误
我之前也碰到过这个烦人的12500错误——明明已经添加了SHA凭证、重新下载了google-services.json、清理缓存后还是报错。咱们一步步排查你可能漏掉的环节:
1. 确认SHA证书的正确性与对应关系
- 你通过
./gradlew signingReport生成的是debug环境的SHA值吗?模拟器默认使用debug keystore,别不小心把release环境的SHA加到Firebase里了。 - 登录Firebase控制台,找到你的Android应用,检查SHA-1和SHA-256是否都准确填写,有没有字符输入错误(比如大小写混淆、漏写字符)。
2. 验证google-services.json的位置与有效性
- 新下载的google-services.json必须放在
android/app/目录下,替换掉旧文件,别误放到android根目录(那是无效的配置位置)。 - 替换后一定要执行
flutter clean,然后完全关闭并重启模拟器,再运行flutter run——有时候缓存会让旧配置依然生效,单纯clean可能不够。
3. 检查Google Cloud Console的OAuth配置
Firebase的Google登录依赖Google Cloud的OAuth 2.0凭据,你需要:
- 打开和Firebase绑定的Google Cloud Console,进入「API和服务」→「凭据」。
- 找到对应的Android客户端ID,确认其SHA-1值和你添加到Firebase的完全一致。
- 另外,去Firebase控制台的「认证」→「登录方法」→「Google」,检查「测试用户」列表里有没有添加你用来登录的Google账号——调试阶段非测试用户会被系统拦截。
4. 检查Flutter项目的配置细节
- 确认
android/app/build.gradle文件末尾已经添加了Google服务插件的引用:apply plugin: 'com.google.gms.google-services' - 确保
google_sign_in插件的版本是最新的,旧版本可能和Firebase SDK存在兼容性问题,可以在pubspec.yaml里更新版本号后执行flutter pub get。
5. 模拟器的Google Play服务版本
部分老旧的模拟器镜像自带的Google Play服务版本过低,会导致认证失败:
- 打开模拟器的「设置」→「应用」→找到「Google Play服务」,检查是否有可用更新。
- 如果无法更新,试试创建一个新的模拟器(比如选择Android 13或14的官方镜像)再测试。
最后可以试试用真实Android设备测试,有时候模拟器的环境会有一些奇怪的兼容性问题。
内容的提问来源于stack exchange,提问作者ilrock




