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

Flutter应用集成Google登录遇ApiException:10错误及客户端ID选择咨询

解决Flutter Google登录ApiException:10错误及客户端ID选择指南

一、排查ApiException:10错误

这个错误几乎都是签名配置或客户端ID不匹配导致的,即使你已经配置了SHA-1,也可能存在以下遗漏:

  • 确认Debug/Release SHA-1都已配置
    开发时Flutter默认使用debug keystore,很多人只配置了release的SHA-1,导致debug模式报错。可以通过以下命令获取debug SHA-1:

    # Mac/Linux
    keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
    
    # Windows
    keytool -list -v -keystore C:\Users\<你的用户名>\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android
    

    把这个SHA-1添加到Firebase项目的Android应用配置,以及GCP OAuth 2.0客户端ID的Android应用设置里。

  • 重新下载google-services.json
    每次修改SHA-1或客户端ID后,都需要从Firebase控制台重新下载google-services.json,替换android/app目录下的旧文件——旧文件不会自动同步新配置信息。

  • 验证包名一致性
    检查GCP OAuth里Android客户端ID的包名,和你Flutter项目android/app/build.gradle中的applicationId完全一致,大小写、符号都不能出错。

  • 清理项目缓存
    执行以下命令清理缓存后重新运行项目,避免旧配置残留:

    flutter clean
    flutter pub get
    flutter run
    
  • 检查Google服务依赖配置
    确认android/build.gradle中已添加Google服务依赖:

    buildscript {
      dependencies {
        // 可使用最新稳定版
        classpath 'com.google.gms:google-services:4.3.15'
      }
    }
    

    同时android/app/build.gradle末尾要添加:

    apply plugin: 'com.google.gms.google-services'
    

二、客户端ID选择指南

你提到有4个客户端ID,只需根据平台类型精准选择即可:

  • 优先选Android类型的客户端ID:这是专门给Flutter Android端用的,在GCP OAuth控制台里会标注类型为「Android」,关联了你配置的SHA-1和app包名。Firebase控制台的「项目设置」->「应用」->你的Android应用详情里,也能看到这个客户端ID,两者是一一对应的。
  • Web类型客户端ID:这是给你的Django Web端用的,Flutter Android端不需要使用。
  • iOS/Desktop类型客户端ID:如果你的Flutter app暂时只做Android,这些可以忽略,后续扩展平台时再对应使用。

另外要注意:Firebase会自动帮你关联GCP的客户端ID,只要你在Firebase里正确配置了Android应用并下载了google-services.json,Flutter的google_sign_in插件会自动读取正确的客户端ID,不需要手动指定(除非你有特殊多客户端需求)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 17:27:46