部署在Firebase Functions的NodeJS出现Invalid API key错误求助
检查客户端请求是否冗余携带API Key
Admin SDK在服务端运行时不需要API Key,但如果你的NextJS客户端请求Firebase Functions时,错误附带了用于客户端SDK的apiKey参数(比如URL参数、请求头或请求体中),就会触发这个错误。请清理请求中多余的API Key字段,只传递必要的认证信息(如用户ID Token)。排查
./server中的客户端SDK误用
你的代码引入了./server模块,如果该模块内错误初始化了Firebase客户端SDK(firebase包)而非Admin SDK(firebase-admin),且客户端SDK要求传入API Key但配置有误,就会引发错误。请检查./server文件,确保所有Firebase操作都依赖firebase-admin,移除不必要的客户端SDK依赖或修正其配置。验证Firebase Functions的环境配置
虽然Admin SDK默认会自动获取部署环境的凭据,但如果函数部署时环境变量缺失或配置错误,可能导致内部认证逻辑异常。可以通过firebase functions:config:get命令查看当前配置,确认firebase相关配置正常;手动部署时需确保GOOGLE_APPLICATION_CREDENTIALS环境变量指向正确的服务账号密钥文件,或使用Firebase CLI自动配置的默认凭据。确认请求的认证方式正确
如果你的NextJS应用通过用户身份认证访问Functions,需确保客户端请求正确传递ID Token(通常放在Authorization: Bearer <token>请求头中),并在Functions端用Admin SDK验证:const admin = require('firebase-admin'); // 认证中间件示例 async function validateUser(req, res, next) { const token = req.headers.authorization?.split('Bearer ')[1]; if (!token) return res.status(401).send('未授权'); try { const decoded = await admin.auth().verifyIdToken(token); req.user = decoded; next(); } catch (err) { return res.status(401).send('无效令牌'); } } // 在需要认证的路由上使用中间件 app.use('/api/protected', validateUser);
内容的提问来源于stack exchange,提问作者M. Mariscal

