Next.js项目Firebase电话认证遇auth/invalid-app-credentials错误求助
解决Firebase电话认证本地环境
auth/invalid-app-credentials错误 可能的原因及修复步骤
1. Firebase项目配置或API密钥限制变更
即使无代码变更,Firebase后台配置可能自动触发限制:
- 核对Firebase控制台项目设置 > 应用 > Web应用中的API密钥,确认本地使用的密钥与控制台一致,且该密钥未设置IP访问限制(若之前未开启,可能误触发)。
- 进入Authentication > Sign-in method > Phone,确认
localhost:3000(或你的本地开发端口)在授权域名列表内,重点核对域名格式(是否带端口)。
2. Next.js本地缓存干扰
本地开发缓存可能留存旧的Firebase配置:
- 删除
.next缓存文件夹并重启开发服务器:rm -rf .next && npm run dev - 清除浏览器本地存储与Cookie,尤其是Firebase相关的认证缓存。
3. 生产号码的安全策略拦截
测试号码属于Firebase白名单,可跳过严格验证,非测试号码需完整流程,本地环境可能触发安全防护:
- 检查Authentication > Phone > 高级设置,若开启了严格的「防止滥用」模式,可临时降低防护等级排查(仅测试用,生产环境需恢复)。
- 确认Firebase初始化代码参数完整,避免
appId/projectId缺失导致凭据验证失败:const app = initializeApp({ apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY, authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN, projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID, storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET, messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID, appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID, });
4. 本地网络拦截
防火墙、VPN或代理可能阻断Firebase验证请求:
- 关闭VPN/防火墙(或临时允许开发服务器网络请求),直接连接网络测试。
- 切换至手机热点等其他网络环境,排除本地网络问题。
额外排查动作
- 用Postman直接调用
https://identitytoolkit.googleapis.com/v1/accounts:sendVerificationCode?key=你的API密钥,携带正确请求体(phoneNumber、recaptchaToken等),判断是项目配置问题还是本地代码/缓存问题。 - 检查本地环境变量,确保
NEXT_PUBLIC_FIREBASE_API_KEY等变量未被覆盖或写错。
内容的提问来源于stack exchange,提问作者Smitesh Arolkar
相关产品推荐
相关产品推荐

