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

Flutter Web谷歌登录报错firebase_auth/invalid-credential求助

Flutter Web谷歌登录invalid-credential错误解决方案

针对你遇到的firebase_auth/invalid-credential Invalid Idp Response: access_token audience is not for this project错误,按以下步骤排查修复:

核心问题

这个错误是Google返回的access_token受众与你的Firebase项目不匹配,本质是Client ID配置错误或不统一。

具体修复步骤

1. 统一Web端Client ID

  • 打开Firebase控制台→项目设置→通用→找到你的Web应用,复制其对应的OAuth 2.0客户端ID(注意:必须是Web应用的,不能用安卓/iOS的)
  • 确保index.html中的meta标签完全使用这个Client ID:
    <meta name="google-signin-client_id" content="复制的Web Client ID">
    
  • 同时去Google Cloud控制台→API和服务→凭据,找到该Web Client ID,确认和Firebase里的完全一致。

2. 初始化GoogleSignIn时指定Client ID

你的代码中GoogleSignIn().signIn()没有指定Web端的Client ID,Flutter Web环境下必须显式传入:

class AuthService{
  signInWithGoogle() async{
   try{
     // 替换成你的Web Client ID
     final GoogleSignInAccount? gUser = await GoogleSignIn(
       clientId: "1078336123339-gigk2v6oam5gnev33l551p268logfd1i.apps.googleusercontent.com",
     ).signIn();

     final GoogleSignInAuthentication gAuth = await gUser!.authentication;

     final credential = GoogleAuthProvider.credential(
         accessToken: gAuth.accessToken,
         idToken: gAuth.idToken
     );

     return await FirebaseAuth.instance.signInWithCredential(credential);
   }catch(e){
     var message = e.toString();
     print("this is the error: $message");
   }
  }
}

3. 检查授权域配置

  • Firebase控制台→Authentication→登录方法→谷歌→Web SDK配置,确保授权域包含你的测试/部署域名(本地测试填localhost,线上填实际域名)
  • Google Cloud控制台对应Client ID的已授权的JavaScript来源,添加你的Web应用地址(比如http://localhost:5000)

4. 清除缓存并重启

  • 用浏览器隐私窗口测试,避免旧token缓存干扰
  • 重启Flutter Web项目,确保新配置生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 15:01:22