Angular集成Firebase推送通知遇403权限拒绝错误求助
排查Angular+Firebase推送通知403权限错误
问题重现
在Angular项目中基于Firebase实现推送通知,允许通知权限前功能正常,但授权后无法获取推送Token,控制台抛出以下错误:
notifications.component.ts:169 FirebaseError: Installations: Create Installation request failed with error "403 PERMISSION_DENIED: Requests to this API firebaseinstallations.googleapis.com method google.firebase.installations.v1.FirebaseInstallationsService.CreateInstallation are blocked." (installations/request-failed). at index.esm2017.js:94:26 at Generator.next (<anonymous>) at asyncGeneratorStep (asyncToGenerator.js:3:1) at _next (asyncToGenerator.js:25:1) at ZoneDelegate.invoke (zone.js:372:1) at Object.onInvoke (core.mjs:25488:1) at ZoneDelegate.invoke (zone.js:371:1) at Zone.run (zone.js:134:1) at zone.js:1276:1 at ZoneDelegate.invokeTask (zone.js:406:1)
排查步骤
1. 确认Firebase Installations API已启用
- 登录Firebase控制台,进入目标项目的「设置」→「服务账号」页面,检查Firebase Installations API状态,确保已启用
- 若未启用,点击「启用API」按钮完成激活,等待5-10分钟让配置生效
2. 检查API密钥的限制规则
- 在Firebase控制台「设置」→「通用」→「你的应用」中,找到Web应用的配置信息,复制
apiKey - 登录关联的Google Cloud控制台,进入「API和服务」→「凭据」,找到对应的API密钥
- 检查密钥的「应用限制」和「API限制」:
- 应用限制:若设置了HTTP referrer限制,确保你的测试/生产域名已添加到允许列表;若为IP限制,确认客户端IP在允许范围内
- API限制:确保已将「Firebase Installations API」添加到允许的API列表中,避免设置为仅允许特定API且未包含该服务的规则
3. 验证Firebase SDK配置与版本兼容性
- 确认Angular项目
environment.ts中的Firebase配置(apiKey、authDomain、projectId等)与Firebase控制台完全一致,无拼写错误 - 检查
@angular/fire和firebase的版本是否匹配:- 运行
npm list @angular/fire firebase查看当前版本 - 参考官方文档确认版本兼容性,若存在版本不兼容,升级/降级到匹配版本后重新安装依赖
- 运行
4. 重置Firebase Installations状态
- 清除浏览器缓存及Service Worker:
- 打开浏览器开发者工具→「应用」→「存储」→点击「清除站点数据」
- 同时删除「Service Workers」下的相关缓存
- 重启Angular开发服务器,重新触发通知授权流程
5. 检查IAM权限设置
- 在Google Cloud控制台进入「IAM与管理员」→「IAM」页面
- 找到当前项目使用的服务账号(客户端调用通常对应默认的Web应用关联账号)
- 确保该账号拥有
Firebase Installations Admin或Firebase Installations Viewer角色,至少具备firebaseinstallations.installations.create权限
6. 验证请求环境
- 确认测试环境为HTTPS(localhost除外,Firebase允许localhost作为安全源)
- 在浏览器设置中确认通知权限已正确授予,避免权限状态异常导致的请求失败
内容的提问来源于stack exchange,提问作者Virantha Dasanayake
相关产品推荐
相关产品推荐

