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

Flutter应用启动自动登录Google Play Games遇错误码10求助

解决Flutter Google Play Games登录ApiException:10错误

ApiException:10 是Google登录场景下最常见的配置不匹配类错误,结合你已执行的操作,按以下步骤逐一排查修复:

1. 修正strings.xml的项目ID配置

你当前的strings.xml中项目ID是占位符且包含多余空格,必须替换为Play Console游戏服务的真实项目ID,同时删除字符串前后的无效空格:

<resources>
    <string translatable="false" name="game_services_project_id">你的真实项目ID</string>
</resources>

2. 修复AndroidManifest的meta-data语法错误

你写的@strings/game_services_project_id是错误的,Android资源引用规则为单数@string,修正后配置如下:

<meta-data
    android:name="com.google.android.gms.games.APP_ID"
    android:value="@string/game_services_project_id"/>

3. 确认SHA1指纹与凭据配置

这是最容易忽略的核心环节:

  • 生成你当前使用的签名密钥(调试版debug.keystore或发布版密钥)的SHA1指纹
  • 在Play Console→游戏服务→你的游戏→凭据中添加该SHA1指纹
  • 在Google Cloud Console→API和服务→凭据中,确认Android类型的OAuth 2.0客户端ID包含正确的应用包名和SHA1指纹

4. 修复Flutter登录代码的逻辑错误

你用then处理googleUser.authentication会导致googleAuth始终为null,改用await正确获取认证信息,同时增加用户取消登录的判断逻辑:

signIn() async {
  try {
    final googleUser = await GoogleSignIn(
      signInOption: SignInOption.games,
    ).signIn();
    if (googleUser == null) return; // 处理用户主动取消登录的情况
    final googleAuth = await googleUser.authentication;
    print("googleAuthen========${googleAuth.accessToken}");
    if (googleAuth.accessToken != null) {
      final credential = GoogleAuthProvider.credential(
        accessToken: googleAuth.accessToken,
        idToken: googleAuth.idToken,
      );
      await FirebaseAuth.instance.signInWithCredential(credential);
    }
  } catch (error) {
    print('Error during Google sign-in: $error');
  }
}

5. 额外检查项

  • 确保测试设备已安装Google Play Games应用,且登录了有效的Google账号
  • 调试时使用的签名密钥必须和配置的SHA1指纹对应(不要混用发布密钥调试)
  • 确认Play Console中的游戏服务已添加测试账号(未发布的游戏服务仅允许指定测试账号登录)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:52:36