You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动