You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter发布模式下Google Sign-In失败,报PlatformException错误

解决Flutter发布版Google Sign-In报错PlatformException(sign_in_failed, D0.b: 10: , null, null)

这个错误本质是Google身份验证时签名证书或OAuth配置不匹配,以下是针对你已排查步骤之外的关键解决点:

1. 重新校验发布版SHA签名值

不要依赖旧的SHA记录,重新生成并验证:

  • 执行命令生成发布密钥库的SHA值:
    keytool -list -v -keystore /path/to/your/release-key.jks -alias your-key-alias
    
  • 把输出的SHA-1和SHA-256精确复制到Firebase项目设置的「Android应用」→「签名证书指纹」中,确保没有多余空格或换行。
  • 复制完成后,重新下载最新的google-services.json替换到android/app目录,执行flutter clean、flutter pub get后再构建发布版。

2. 核对Google Cloud Console的OAuth客户端ID

  • 进入Google Cloud Console的「API和服务」→「凭据」页面,找到对应Android应用的OAuth 2.0客户端ID:
    • 确认该客户端ID的「签名证书指纹」与发布版SHA值完全一致。
    • 若没有对应发布版的客户端ID,手动创建:选择「创建凭据」→「OAuth客户端ID」,类型选「Android」,输入应用包名和发布版SHA-1后保存。
  • 确保Firebase控制台中Android应用关联的客户端ID与Cloud Console中的一致。

3. 显式配置Google Sign-In客户端ID

尝试在代码中显式指定发布版的Android客户端ID,避免自动匹配错误:

final GoogleSignIn _googleSignIn = GoogleSignIn(
  clientId: "your-release-android-client-id.apps.googleusercontent.com",
);

注意:客户端ID必须是Android类型的,不要使用Web或其他类型的ID。

4. 检查OAuth同意屏幕状态

  • 进入Google Cloud Console的「API和服务」→「OAuth同意屏幕」:
    • 若应用已上线,确保状态为「已发布」(测试状态下仅添加的测试用户可登录,发布版使用非测试用户会失败)。
    • 若仍处于测试阶段,确认你用于登录的Google账号已添加到「测试用户」列表中。

5. 确认Android构建签名配置

打开android/app/build.gradle,检查release构建类型是否正确引用发布密钥库:

signingConfigs {
    release {
        keyAlias 'your-key-alias'
        keyPassword 'your-key-password'
        storeFile file('path/to/release-key.jks')
        storePassword 'your-keystore-password'
    }
}

buildTypes {
    release {
        signingConfig signingConfigs.release
        // 其他构建配置
    }
}

避免误将调试签名配置用于发布版构建。

6. Google Play应用签名适配(若上传至Play商店)

如果你的应用通过Google Play发布,Google会替换应用签名密钥:

  • 进入Play控制台→你的应用→「应用完整性」→「应用签名」,复制页面中的应用签名证书SHA-1/SHA-256。
  • 将这些SHA值添加到Firebase项目的签名证书指纹列表中,重新下载google-services.json后构建。

内容的提问来源于stack exchange,提问作者Aymalow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 12:50:24