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
相关产品推荐
相关产品推荐

