Flutter中添加SHA密钥后Google Auth仍无法正常工作
解决Firebase Google登录配置后仍报错的方案
- 确认SHA密钥的完整性
- 除调试密钥外,别漏加发布版SHA密钥(哪怕调试阶段,部分场景也会触发校验)
- 用命令重新生成密钥时,复制内容要精准:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android(Windows用户替换路径为C:\Users\[你的用户名]\.android\debug.keystore),不要带空格或多余字符,直接粘贴到Firebase控制台的SHA列表
- 重新替换google-services.json
- 修改Firebase的SHA密钥后,必须下载最新的
google-services.json,覆盖项目app/目录下的旧文件 - 执行
./gradlew clean(Windows用gradlew clean)清理缓存,再重新构建项目
- 修改Firebase的SHA密钥后,必须下载最新的
- 检查代码核心配置
- 初始化GoogleSignInClient时,必须用Firebase控制台提供的Web client ID(不是Android客户端ID),示例代码:
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestIdToken(getString(R.string.default_web_client_id)) .requestEmail() .build() val mGoogleSignInClient = GoogleSignIn.getClient(this, gso) - 确认
strings.xml中已添加default_web_client_id,值与Firebase提供的一致
- 初始化GoogleSignInClient时,必须用Firebase控制台提供的Web client ID(不是Android客户端ID),示例代码:
- 验证Firebase与Google Cloud配置
- 进入Firebase控制台Authentication -> Sign-in method,确认Google登录已启用,且支持的邮箱域包含测试邮箱
- 打开对应项目的Google Cloud Console,检查OAuth consent screen是否添加了测试用户(未发布应用需手动添加)
- 排查设备环境问题
- 调试用的模拟器/物理设备必须登录有效Google账号,且网络正常
- 清除Google Play服务缓存:设置 -> 应用 -> Google Play服务 -> 存储 -> 清除缓存
- 更换设备/模拟器测试,排除单设备环境异常
- 定位具体报错信息
- 在登录回调中打印完整异常日志,比如
exception.printStackTrace(),根据错误码针对性处理(如12500为配置错误,10为签名不匹配)
- 在登录回调中打印完整异常日志,比如
内容的提问来源于stack exchange,提问作者Salman Rafi
相关产品推荐
相关产品推荐

