Flutter中Firebase Google Sign In错误12500(生产环境异常)求助
错误12500本质是OAuth客户端配置不匹配或签名验证失败,以下是针对性修复步骤:
确认生产包签名指纹完全匹配
模拟器用的是调试签名,生产版如果用发布keystore打包,必须确保Firebase控制台和GCP OAuth客户端里的SHA-1、SHA-256是发布版签名指纹,而非调试版。用命令重新生成发布指纹:keytool -list -v -keystore 你的发布keystore路径 -alias 你的别名复制生成的指纹,替换或添加到Firebase项目设置的「应用签名」区域,同时在GCP控制台「API和服务」→「凭据」里,找到对应Android OAuth客户端ID,确认指纹完全一致。
核对OAuth客户端ID配置
- 打开GCP控制台凭据页面,找到「Android客户端」和「Web客户端」两个ID(Google Sign In依赖Web客户端ID)。
- 确保Android客户端的包名和生产版包名完全一致,无拼写错误。
- 确认Web客户端ID已正确写入Flutter代码:
final GoogleSignIn _googleSignIn = GoogleSignIn( clientId: "你的Web客户端ID.apps.googleusercontent.com", );
检查Google Cloud API状态
登录GCP控制台,搜索「Google Identity Toolkit API」和「Google Sign-In API」,确认两个API均已启用,未启用则点击启用按钮。验证Firebase Auth登录设置
进入Firebase控制台「Authentication」→「登录方法」,确保「Google」登录已启用,且支持的邮箱域名无不合理限制(若有限制,需确保用户邮箱在允许范围内)。重新生成并替换配置文件
修改完Firebase或GCP配置后,下载最新的google-services.json,替换Flutter项目android/app目录下的旧文件,执行flutter clean和flutter pub get后重新打包生产版本。确认打包签名配置正确
检查android/app/build.gradle中的签名配置,确保生产打包使用的是已配置指纹的keystore:signingConfigs { release { keyAlias '你的别名' keyPassword '你的密码' storeFile file('你的keystore路径') storePassword '你的密码' } } buildTypes { release { signingConfig signingConfigs.release // 其他打包配置 } }
内容的提问来源于stack exchange,提问作者shun

