You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FCM从Legacy API迁移至V1 API遇IAM_PERMISSION_DENIED权限问题求助

FCM V1 API 迁移时 IAM_PERMISSION_DENIED 问题解决指南

核心问题定位

错误提示明确要求cloudmessaging.messages.create权限,即使配置了Firebase Admin角色仍报错,大概率是以下几个细节没处理到位:

具体解决步骤

1. 给服务账号添加正确的FCM专属角色

直接进入Google Cloud控制台的IAM页面(非Firebase控制台):

  • 找到用于获取令牌的目标服务账号
  • 点击编辑按钮,添加Firebase Cloud Messaging Admin角色(该角色默认包含cloudmessaging.messages.create权限)
  • 若需更精准控制,也可直接单独添加cloudmessaging.messages.create权限

2. 检查访问令牌的请求作用域(Scope)

Java代码获取令牌时,必须指定FCM专属作用域,否则即使服务账号有权限,令牌也无法获得对应权限:

GoogleCredentials credentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json"))
    .createScoped(Collections.singletonList("https://www.googleapis.com/auth/firebase.messaging"));
credentials.refreshIfExpired();
String accessToken = credentials.getAccessToken().getTokenValue();

3. 修正Authorization请求头格式

请求头里的Bearer与令牌之间不能加引号,正确格式为:

Authorization: Bearer your_actual_access_token_here

错误的Bearer "accessToken"会导致令牌解析失败,触发权限校验错误。

4. 验证服务账号与项目的匹配性

检查服务账号JSON文件中的project_id字段,必须和请求URL里的mt-middleware-****完全一致,避免误用了其他项目的服务账号。

5. 等待IAM权限生效

Google IAM权限变更后存在5-15分钟的缓存延迟,刚添加角色后不要立刻测试,等待一段时间再重试。


内容的提问来源于stack exchange,提问作者Dinesh S

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 03:10:07