gcloud auth print-identity-token返回令牌aud字段不符致Firebase验证失败
核心问题是gcloud auth print-identity-token生成的令牌aud(受众)字段不符合Firebase Functions的验证要求。默认情况下,该命令生成的令牌受众是gcloud的客户端ID,而非你的Firebase项目ID,直接导致Firebase Auth验证失败。
方法1:生成令牌时指定受众参数
执行命令时显式指定Firebase项目ID作为受众,生成的令牌aud字段会匹配预期值:
gcloud auth print-identity-token --audiences=xyzmyproject
生成后可通过jwt.io验证aud字段是否为你的项目IDxyzmyproject,用该令牌请求Firebase Functions即可通过授权。
方法2:检查并重置gcloud默认配置
先检查当前gcloud的身份配置:
gcloud config list auth
若存在异常配置,重置为当前项目的默认服务账号:
gcloud auth application-default login
登录时选择与Firebase项目关联的账号,若仍有问题,优先使用方法1显式指定受众。
方法3:确认Firebase项目与gcloud项目关联
确保Firebase项目和gcloud项目为同一主体,先查看gcloud当前激活的项目ID:
gcloud config get-value project
与Firebase控制台项目设置中的"项目ID"对比,若不一致,切换到对应项目:
gcloud config set project xyzmyproject
错误信息回顾:
Failed to validate auth token. FirebaseAuthError: Firebase ID token has incorrect "aud" (audience) claim. Expected "xyzmyproject" but got "32512345659.apps.googleusercontent.com". Make sure the ID token comes from the same Firebase project as the service account used to authenticate this SDK
内容的提问来源于stack exchange,提问作者Csabi

