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

Android端通过Google登录后如何正确获取用户的Firebase UID?

错误原因分析

  1. 你的谷歌登录配置存在核心错误:GoogleSignInOptions初始化时,requestIdToken传入的是带双引号的"R.string.default_client_id",这会导致你传入的是固定字符串而非项目中实际配置的客户端ID,最终拿到的idToken无效,Firebase认证实际未成功,getCurrentUser()返回null,调用getUid()就会触发空指针报错。
  2. GoogleSignIn.getLastSignedInAccount(getContext()).getId拿到的是谷歌账号自身的ID,和Firebase Auth系统生成的用户UID本来就不是同一值,自然不符合你的需求。

修复步骤

1. 修正谷歌登录配置

将GoogleSignInOptions初始化代码修改为:

signInOptions = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
            // 去掉双引号,通过getString获取实际的客户端ID值
            .requestIdToken(getString(R.string.default_client_id))
            .requestEmail()
            .build();

如果你的项目中R.string.default_client_id没有对应值,直接填入Firebase控制台「项目设置-通用-您的应用-Web API密钥」下方的Web客户端ID即可。

2. 正确获取Firebase UID

Firebase用户UID只能从认证成功后的FirebaseUser对象中获取,正确的获取方式有两种:

  • 在认证成功回调中直接获取:在signInWithCredential的onComplete回调中,确认task.isSuccessful()后直接拿取,此时的用户对象一定有效:
mAuth.signInWithCredential(credential)
        .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
            @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
                if (task.isSuccessful()) {
                    FirebaseUser user = mAuth.getCurrentUser();
                    // 此处直接获取即可得到正确UID
                    String uid = user.getUid();
                    startActivity(new Intent(MainActivity.this,NavActivity.class));
                    updateUI(user);
                } else {
                    updateUI(null);
                }
            }
        });
  • 在其他页面获取:先判断FirebaseUser是否非空再调用getUid(),如果需要监听登录状态可以使用AuthStateListener:
String uid = "";
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
if(currentUser != null){
    uid = currentUser.getUid();
}

注意事项

  • 确保你项目根目录下的google-services.json是最新从Firebase控制台下载的,已经正确配置了谷歌登录相关的客户端信息
  • 不要在signInWithCredential回调触发前调用getCurrentUser(),此时认证流程还未完成,拿到的用户对象大概率为空

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 20:06:04