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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:36:03