"JSON_PARSING_ERROR:位置0处的意外字符(d);当从GAS发送GCM请求时

"JSON_PARSING_ERROR: Unexpected character (d) at position 0." when sending GCM request from GAS

本文关键字:当从 GAS GCM 请求 字符 发送 PARSING JSON quot ERROR 0处      更新时间:2024-03-27

这似乎与许多其他问题非常相似,而且很明显,该错误表明我的JSON负载有问题。但我不知道为什么。

我正在运行一个谷歌应用程序脚本来测试向GoogleFirebase云消息发送消息。

我的代码:

function SendGCMessage() {
  var url = "https://gcm-http.googleapis.com/gcm/send";
  var apiKey = "AbCdEfG";
  var to = "ZyXwVuT:ToKeNtOkEnToKeNtOkEnToKeNtOkEn"
  var payload = {
    "data": {
      "message" : "This is the message"
    },
    "to":to
  };
  var sendCount = 1;
    var headers = {
      "Content-Type": "application/json",
      "Authorization": "key=" + apiKey
    };
    var params = {
      headers: headers,
      method: "post",
      payload: payload
    };
    var response = UrlFetchApp.fetch(url, params);
  return {message: "send completed: " + response.getContentText()};
}

当我在调试模式下运行它时,对象负载看起来很好——就像一个普通的Javascript对象。params。UrlFetchApp采用Javascript对象,而不是JSON表示法中的String。然而,我确实尝试了"JSON.stringfy(params)",但我得到了一个错误。我做错了什么?

注意:当我在调试器中暂停params时,它看起来是这样的:

{"headers":{"Content Type":"application/json","Authorization":"key=AbCdEfG"},"method":"post"是消息"},"到":"ZyXwVuT:ToKeNtOkEnToKeNtOkEnToKeNtOkEn"}}

我发现了这个问题,这要归功于https://stackoverflow.com/a/10894233/3576831

"payload"参数必须是此处指定的字符串:https://developers.google.com/apps-script/class_urlfetchapp?hl=fr-FR#获取。

调整脚本的这一部分工作:

var params = {
  headers: headers,
  method: "post",
  payload: JSON.stringify(payload)
};