首页 > 解决方案 > 如何获取 Google Apps 脚本到 Firebase Cloud Messaging HTTP v1 API 的权限/范围?

问题描述

我正在尝试从 Google Apps 脚本发送 Firebase Cloud 消息。我遵循了以下问题和链接并组装了以下代码:

使用“新”Firebase 云消息传递 API 获得 403 响应

res| error我收到的是:

 {
  "error": {
    "code": 403,
    "message": "Request had insufficient authentication scopes.",
    "status": "PERMISSION_DENIED"
  }
}

我在 Google Apps 脚本中的代码是:

function sendFCM(text){
  text = {
    "message": {
      "topic": "news",
      "notification": {
        "title": "Breaking News",
        "body": "New news story available."
      },
      "data": {
        "story_id": "story_12345"
      }
    }
  }
  var projectId = "xxxxxxx";
  var apiUrl = "https://fcm.googleapis.com/v1/projects/"+projectId+"/messages:send";
  var authKey = "AAAU.......Cs";
  var token = ScriptApp.getOAuthToken();
  var options = {
    'method' : 'post',
    'contentType': 'application/json',
    'muteHttpExceptions' : true,
    'payload' : JSON.stringify(text),
    headers:{Authorization: "Bearer "+ token},
  };
  var res = UrlFetchApp.fetch(apiUrl, options);
  Logger.log(res);
}

脚本的属性 > 用户范围列表如下:

https://www.googleapis.com/auth/firebase.database
https://www.googleapis.com/auth/script.external_request
https://www.googleapis.com/auth/spreadsheets
https://www.googleapis.com/auth/userinfo.email

FCM & GCM Api 在项目的开发者控制台中启用。

编辑:

根据Ref的评论,我在应用清单中添加了以下范围:

https://www.googleapis.com/auth/firebase.messaging

运行时,它要求我授权,现在它response是消息的一个实例。但我仍然不知道如何定义to设备,即消息应该发送到哪个设备。

{
  "name": "projects/send-xxxx3/messages/866xxxxx92"
} 

标签: firebasegoogle-apps-scriptfirebase-cloud-messaging

解决方案


推荐阅读