Firebase App Check集成报错:ID Token的aud声明不匹配问题
问题排查与解决
核心错误原因
你后端误用了Firebase Auth的auth.verify_id_token()方法验证App Check Token。App Check Token的aud(受众)声明是包含项目编号和项目ID的数组,而Auth的ID Token验证方法仅接受单一的项目ID值,这直接导致了不匹配错误。
修正后的后端验证代码
替换原有验证逻辑,使用Firebase Admin SDK中专门用于App Check Token的verify_token方法:
import firebase_admin from firebase_admin import credentials, app_check cred = credentials.Certificate("serviceaccountkey.json") firebase_admin.initialize_app(cred) def lambda_handler(event, context): print(event) app_check_token = event['headers'].get('x-firebase-appcheck', 'abc') try: # 使用App Check专属的Token验证方法 decoded_token = app_check.verify_token(app_check_token) response = handle_request(event) except (ValueError, jwt.exceptions.DecodeError) as e: response = { 'statusCode': 401, 'body': 'Unauthorized' } print(e) print(response) return response
额外排查点
- 确认
serviceaccountkey.json属于当前Firebase项目,且关联的服务账号拥有Firebase App Check Admin权限 - 检查客户端请求中传递的确实是App Check Token,而非Firebase Auth的ID Token
- 升级Firebase Admin SDK到最新版本,旧版本可能存在验证逻辑的兼容性问题
内容的提问来源于stack exchange,提问作者Divij Gupta
相关产品推荐
相关产品推荐

