Flutter集成Google登录遇12500错误,接入Firebase后失效求助
解决Flutter接入Firebase后Play Store中Google登录失效的方案
以下是针对你遇到的「接入Firebase后Play Store版本Google登录抛出ApiException」问题的常见解决方案:
同步Play Store应用签名指纹到Firebase和Google Cloud
发布到Play Store后,应用会使用Play App Signing提供的签名密钥,而非你本地的上传密钥。需要将Play Store生成的SHA-1/SHA-256指纹添加到两个平台:- 登录Play Console → 你的应用 → 发布 → 设置 → 应用签名 → 复制「应用签名密钥证书」下的SHA-1和SHA-256
- 打开Firebase控制台 → 项目设置 → 添加指纹,粘贴上述两个值
- 打开Google Cloud控制台 → APIs与服务 → 凭据 → 找到你的Android客户端ID → 编辑 → 添加这两个SHA指纹
检查OAuth 2.0客户端ID配置
接入Firebase时会自动生成新的Android客户端ID,确保你的Flutter代码使用的是包含Play Store指纹的客户端ID,或者更新原有客户端ID的指纹信息。同时确认包名与Firebase、Google Cloud中的配置完全一致。更新google-services.json文件
在Firebase控制台添加完新指纹后,下载最新的google-services.json文件,替换Flutter项目android/app目录下的旧文件,然后清理并重建项目。排查ApiException错误码
通过捕获异常获取具体错误码,能快速定位问题:try { // Google登录逻辑 } catch (error) { if (error is ApiException) { print('Google登录错误码: ${error.statusCode}'); // 根据错误码处理: // 12500: 网络问题或配置无效 // 10: 开发者配置错误(大概率凭据问题) // 7: 权限拒绝(检查OAuth同意屏幕) } }配置OAuth同意屏幕
若你的应用是公开应用,需在Google Cloud控制台将OAuth同意屏幕设置为「生产」状态;若仍处于「测试」状态,仅添加的测试用户能登录,普通用户会报错。同时确认请求的权限范围已在同意屏幕中正确列出。清理并重建项目
旧的构建缓存可能导致配置不生效,执行以下命令:flutter clean flutter pub get cd android && ./gradlew clean cd .. && flutter build appbundle
内容的提问来源于stack exchange,提问作者Prashant Adhikari
相关产品推荐
相关产品推荐

