FCM cloudmessaging.messages.create IAM_PERMISSION_DENIED

问题描述 投票:0回答:1

我们正在从 HTTP 旧版 API 迁移到 Firebase 云消息传递 (FCM) 的 HTTP V1 API。根据文档,我们遵循了所有步骤,创建服务帐户 JSON 文件,使用服务帐户 JSON 文件(带有 Java 代码)获取短期身份验证令牌,然后使用 FCM REST API 调用发送通知。

Java 代码工作得很好并返回访问令牌。在授权部分中传递相同的令牌作为“Bearer +accessToken”,但我们收到“IAM_PERMISSION_DENIED”错误。

下面是我们用来调用 REST API 的示例请求/响应参数。

HTTP 发布网址:https://fcm.googleapis.com/v1/projects/mt-middleware-****/messages:send

授权:承载“accessToken” 要求: { “信息”: { "token": "********",//设备令牌 “通知”: { "body": "这是一条 FCM 通知消息!", "title": "FCM 消息" } } }

回应: { “错误”: { “代码”:403, "message": "资源 '//cloudresourcemanager.googleapis.com/projects/mt-middleware-' 的权限 'cloudmessaging.messages.create' 被拒绝(或者它可能不存在)。", “状态”:“PERMISSION_DENIED”, “细节”: [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", “原因”:“IAM_PERMISSION_DENIED”, “域名”:“cloudresourcemanager.googleapis.com”, “元数据”:{ “资源”:“项目/mt-middleware-”, "permission": "cloudmessaging.messages.create" } } ] } }

我们也尝试为所有者启用 Firebase 管理员角色。但这没有帮助。请指导是否需要在 Firebase 控制台页面启用任何其他附加权限?

rest push-notification firebase-cloud-messaging
1个回答
0
投票

我以前也遇到过这个问题。我通过在 FCM 服务帐户创建一个新的服务帐户来修复此问题。

创建新的服务帐户后,管理其权限并将其角色分配给Owner,如下图所示:

然后分配其角色后,返回FCM服务帐户,在右侧单击三点菜单,然后继续管理密钥

到达那里后,您可以生成一个新密钥并将其保存为JSON。替换您当前的 JSON 文件,然后尝试启动您的应用程序。

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.