Google SignIn API异常10:认证终阶段handleSignInResult报错解决咨询
解决Google登录Exception Code 10(开发者错误)的方案
兄弟,我之前也踩过这个坑!Code 10本质就是Google后台配置和你的应用不匹配,属于典型的开发者配置失误,别慌,一步步来排查修复:
核心排查步骤
- 核对SHA-1证书指纹:这是最常见的问题根源
- 打开Android Studio的Terminal,输入debug环境的SHA-1获取命令:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android - 复制输出的SHA-1值,登录Google Cloud控制台找到你的项目,进入「API和服务」→「凭据」→「OAuth 2.0客户端ID」,确保这个SHA-1已经绑定到对应包名(你的包名是
ru.podgorny.carcall)的客户端ID上。
- 打开Android Studio的Terminal,输入debug环境的SHA-1获取命令:
- 确认google-services.json文件有效性
- 从Google Cloud控制台重新下载
google-services.json,下载时务必选对包名和刚才的SHA-1值。 - 将文件放到项目的
app目录下,同时检查项目根目录的build.gradle是否配置了Google服务插件:
以及app模块的dependencies { classpath 'com.google.gms:google-services:4.3.15' // 版本可使用最新稳定版 }build.gradle末尾是否有:apply plugin: 'com.google.gms.google-services'
- 从Google Cloud控制台重新下载
- 检查包名一致性:确保项目的包名
ru.podgorny.carcall和Google Cloud控制台里OAuth客户端ID配置的包名完全一致,大小写、字符都不能错。 - 启用必要的API:登录Google Cloud控制台的「API库」,搜索「Google Sign-In API」,确认它处于启用状态。
- 清理缓存重新构建:点击Android Studio的「Build」→「Clean Project」,然后「Rebuild Project」,重启AS后再测试。
修复后获取账号信息的正确写法
配置没问题后,你可以在handleSignInResult方法里提取账号信息,补充完整你的代码:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == RC_SIGN_IN) { Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data); handleSignInResult(task); } } private void handleSignInResult(Task<GoogleSignInAccount> completedTask) { try { GoogleSignInAccount account = completedTask.getResult(ApiException.class); // 提取账号信息 String userEmail = account.getEmail(); String userName = account.getDisplayName(); String userId = account.getId(); // 更新UI展示信息 tw1.setText("用户邮箱:" + userEmail); tw2.setText("用户昵称:" + userName); // 这里可以添加登录成功后的业务逻辑 } catch (ApiException e) { Log.w(TAG, "登录失败,错误码:" + e.getStatusCode()); } }
内容的提问来源于stack exchange,提问作者max podgorny
相关产品推荐
相关产品推荐

