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

Firebase集成Google登录报错求助:Must specify an idToken or an accessToken

解决Firebase Google登录的"Must specify an idToken or an accessToken"错误

嘿,我看到你在Android应用集成Firebase Google登录时遇到的问题了,咱们一步步来搞定它!

核心错误原因

从错误日志能看出来,问题出在你的Google登录配置没有请求ID Token——Firebase需要这个Token来完成和Google账号的关联认证,而你当前的代码里没有获取这个Token,导致调用GoogleAuthProvider.getCredential()时传入了null的idToken,触发了IllegalArgumentException。

具体修复步骤

1. 修改GoogleSignInOptions配置,添加ID Token请求

你需要在构建GoogleSignInOptions时,加上requestIdToken()方法,并且传入Firebase控制台的Web客户端ID(注意不是Android应用的客户端ID)。

把原来的这段代码:

GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestEmail()
        .build();

替换成:

// 替换成你自己Firebase控制台中的Web客户端ID
String webClientId = "你的Web应用客户端ID";
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
        .requestIdToken(webClientId) // 关键:添加ID Token请求
        .requestEmail()
        .build();

怎么找Web客户端ID?
打开Firebase控制台 → 进入你的项目 → 点击顶部的「项目设置」→ 切换到「常规」标签 → 向下滚动到「SDK设置和配置」区域 → 找到「Web应用」(如果没有就点击「添加应用」→ 选择Web应用创建)→ 里面的「客户端ID」就是你需要的webClientId。

2. 修正onActivityResult中的提前跳转问题

你当前在onActivityResult的try块里,调用firebaseAuthWithGoogle()之后立刻跳转到MainActivity,但firebaseAuthWithGoogle()是异步操作,这时候Firebase认证还没完成,而且你已经设置了AuthStateListener,它会在认证成功后自动跳转,所以需要移除这段提前跳转的代码:

修改前:

try {
    GoogleSignInAccount account = task.getResult(ApiException.class);
    firebaseAuthWithGoogle(account);
    startActivity(new Intent(Signin.this , MainActivity.class)); // 这里要移除
} catch (ApiException e) {
    Log.w(TAG, "Google sign in failed", e);
}

修改后:

try {
    GoogleSignInAccount account = task.getResult(ApiException.class);
    firebaseAuthWithGoogle(account);
    // 移除上面的startActivity,交给AuthStateListener处理
} catch (ApiException e) {
    Log.w(TAG, "Google sign in failed", e);
    Toast.makeText(Signin.this, "Google登录失败,请重试", Toast.LENGTH_SHORT).show();
}

3. 再次确认SHA1证书指纹和配置文件

虽然你已经更新了SHA1,但还是要再检查一遍:

  • 用Android Studio的Terminal运行./gradlew signingReport(Windows用gradlew signingReport),获取debug版本的SHA1指纹,确保和Firebase控制台中Android应用的SHA证书指纹完全一致。
  • 修改SHA1后,一定要重新下载Firebase的google-services.json文件,替换你app目录下的旧文件,然后Clean并Rebuild项目。

额外小提示

  • 确保你的Firebase Auth依赖是最新版本(可以在build.gradle中检查)。
  • 测试时用debug版本的APK,因为你配置的是debug的SHA1,release版本需要单独配置release的SHA1。

按照这些步骤修改后,你的Google登录应该就能正常工作了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 11:12:30