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
相关产品推荐
相关产品推荐

