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

Flutter Android谷歌登录报ApiException:10 iOS端serverAuthCode为null

Flutter google_sign_in 插件集成问题及修复方案

问题清单

  • Android端登录触发失败,抛出异常:PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null),已参考公开社区同问题的解决方案操作,问题未解决
  • iOS端可正常拉起授权弹窗、完成登录流程并获取用户基础信息,但返回结果中serverAuthCode字段值为null

对应问题修复步骤

Android端 ApiException 错误码10 修复

错误码10本质是Google服务端对当前应用的身份校验不通过,按以下优先级排查:

  • 核对Google Cloud/Firebase控制台填写的应用包名,和项目android/app/build.gradle中配置的applicationId完全一致,若存在debug、release、多渠道包不同包名的情况,需要把所有包名都在控制台添加对应配置
  • 补全所有签名证书的SHA1指纹,不要只配置debug签名:
    • debug签名SHA1获取命令:keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
    • release签名SHA1获取命令:keytool -list -v -keystystore [你的release签名文件本地路径] -alias [你的证书别名],按提示输入签名密码即可查看
    • 若应用已上架Google Play,需要额外到Play管理中心的「应用签名」板块,将Google托管的应用签名证书SHA1也添加到控制台
  • 所有配置修改完成后,重新从控制台下载最新的google-services.json文件,替换项目中android/app/路径下的旧配置文件,不要手动修改旧文件内容
  • 检查项目内所有Google相关依赖的版本,确保和google_sign_in插件依赖的play-services-auth版本对齐,避免版本冲突导致身份校验异常
  • 排除测试设备环境问题:部分国行机自行安装的魔改GMS、第三方模拟器自带的修改版Google服务框架,会导致校验失败,换搭载官方原生GMS的设备测试验证

iOS端 serverAuthCode 返回null 修复

  • 初始化GoogleSignIn实例时,必须显式传入iOS端对应的OAuth客户端ID(格式为xxx-xxx.apps.googleusercontent.com),不要留空使用默认配置
  • 若需要给后端传递授权码做登录校验,初始化时要传入你后端服务对应的Web端OAuth客户端ID,或者在拿到登录账号后主动调用方法请求授权码,示例代码:
// 初始化配置示例
final GoogleSignIn googleSignIn = GoogleSignIn(
  clientId: "你的iOS端OAuth客户端ID",
  // 替换为你自己的Web端客户端ID,后端用这个ID换token
  serverClientId: "你的Web端OAuth客户端ID",
  scopes: ['email', 'profile'],
);

// 登录时获取授权码示例
final GoogleSignInAccount? account = await googleSignIn.signIn();
if (account != null) {
  final GoogleSignInAuthentication auth = await account.authentication;
  // 此时auth.serverAuthCode就不会为null
  final String? serverAuthCode = auth.serverAuthCode;
}
  • 核对ios/Runner/Info.plist中的URL Scheme配置,需要和你使用的iOS客户端ID的反向格式完全匹配,格式为com.googleusercontent.apps.xxx-xxx,不要出现字符错漏
  • 若使用Firebase Auth承接登录,需要到Firebase控制台的Google登录配置页,补全项目支持邮箱,未填写支持邮箱会导致授权码返回空

开发环境信息(flutter doctor 检测结果)

[✓] Flutter (Channel stable, 3.0.4, on macOS 12.4 21F79 darwin-x64, locale en-US)
    • Flutter version 3.0.4 at /Users/cuongtruongquoc/Documents/fvm/3.0.4
    • 上游代码仓库为Flutter官方仓库
    • Framework revision 85684f9300 (2 days ago), 2022-06-30 13:22:47 -0700
    • Engine revision 6ba2af10bb
    • Dart version 2.17.5
    • DevTools version 2.12.2

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    • Android SDK at /Users/cuongtruongquoc/Library/Android/sdk
    • Platform android-33, build-tools 33.0.0
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.11.3

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2021.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • 已安装Flutter开发插件
    • 已安装Dart开发插件
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)

[✓] Connected device (4 available)
    • Live (mobile)              • AHB00036590   • android-arm64  • Android 10 (API 29)
    • sdk gphone x86 64 (mobile) • emulator-5554 • android-x64    • Android 11 (API 30) (emulator)
    • macOS (desktop)            • macos         • darwin-x64     • macOS 12.4 21F79 darwin-x64
    • Chrome (web)               • chrome        • web-javascript • Google Chrome 103.0.5060.53

[✓] HTTP Host Availability
    • All required HTTP hosts are available

内容的提问来源于stack exchange,提问作者Cuong Truong Quoc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 04:31:13