如何在Android应用中集成Google Sign In谷歌账号登录功能?
Android 谷歌账号登录集成解决方案
你代码中最核心的问题是登录判断逻辑写反,这是无法弹出账号选择窗口的直接原因,按照以下步骤修改即可实现需求:
1. 修正登录判断逻辑
当前checkLogIn方法的判断规则完全颠倒,现有逻辑是「已有登录账号才触发登录弹窗,首次启动无登录缓存反而不执行任何操作」,修正后的代码如下:
void checkLogIn(){ GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this); if(account == null){ // 无登录缓存,触发谷歌账号选择弹窗 signIn(); }else{ // 已有登录账号,直接读取账号信息执行后续业务逻辑 } }
2. 补全登录结果处理逻辑
你现有的登录结果处理没有关联Firebase Auth逻辑,也没有错误捕获,补全后代码如下:
private void handleSignInResult(Task<GoogleSignInAccount> completedTask) { try { GoogleSignInAccount account = completedTask.getResult(ApiException.class); // 关联谷歌账号凭证到Firebase Auth AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null); auth.signInWithCredential(credential) .addOnCompleteListener(this, task -> { if (task.isSuccessful()) { // 登录成功,可在此处读取用户信息、跳转业务页面 FirebaseUser user = auth.getCurrentUser(); } else { Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_SHORT).show(); } }); } catch (ApiException e) { Log.e("登录错误", "错误码: " + e.getStatusCode()); Toast.makeText(MainActivity.this, "登录出错", Toast.LENGTH_SHORT).show(); } }
3. 必须检查的配置项
- 确认项目级和模块级的
build.gradle已经正确引入Firebase Auth、谷歌登录的相关依赖 - 确认Firebase控制台已经配置了你应用的调试、发布环境SHA1指纹
- 确认
google-services.json文件已经放到app模块根目录 - 确认你代码中
requestIdToken传入的是Firebase控制台谷歌登录配置下的Web客户端ID,不要误填Android客户端ID
内容的提问来源于stack exchange,提问作者qwirrr
相关产品推荐
相关产品推荐

