Flutter集成Firebase后Google Sign-In安卓部分设备报ApiException:10错误
解决Flutter Firebase Google Sign-In安卓发布后部分设备登录失败(ApiException:10)的问题
核心排查与修复步骤
ApiException:10本质是OAuth客户端不匹配或签名密钥配置遗漏/错误,结合你已添加三类SHA密钥的情况,重点执行以下操作:
1. 核对Google Cloud OAuth客户端配置
- 登录Google Cloud控制台,进入项目的API和服务 > OAuth 2.0 客户端ID页面
- 确认存在三个对应安卓客户端:
- 包名+调试SHA密钥的客户端
- 包名+本地发布SHA密钥的客户端
- 包名+Play应用签名SHA密钥的客户端
- 若缺失则补充添加,已存在的需核对包名、SHA值与对应环境完全一致
2. 更新Firebase配置并清理缓存
- 登录Firebase控制台,重新下载
google-services.json文件 - 替换安卓项目
app目录下的旧配置文件 - 执行命令清理项目缓存并重新构建:
flutter clean flutter pub get
3. 确认Play应用签名密钥状态
- 进入Google Play Console的应用签名页面,核对显示的SHA1/SHA256与你添加到Firebase的完全一致
- 若启用了应用签名密钥轮换,需将新生成的轮换SHA密钥同步添加至Firebase和Google Cloud
4. 适配设备Google Play服务版本
- 部分旧设备的Google Play服务版本过低会触发登录失败,可在应用中添加版本检测逻辑:
import 'package:google_api_availability/google_api_availability.dart'; Future<void> checkPlayServicesStatus() async { final status = await GoogleApiAvailability.instance.checkGooglePlayServicesAvailability(); if (status != GooglePlayServicesAvailability.success) { // 提示用户更新Google Play服务 } }
5. 检查OAuth同意屏幕配置
- 确保Google Cloud控制台的OAuth同意屏幕已完成发布(针对外部用户),且应用名称、隐私政策链接等信息完整
- 若处于测试状态,仅添加的测试用户可正常登录,非测试用户会触发失败
内容的提问来源于stack exchange,提问作者Seyyid ÇIRAK
相关产品推荐
相关产品推荐

