3

これは他の多くの質問と非常によく似ており、JSON ペイロードに何か問題があることをエラーが示していることは明らかです。しかし、私はその理由について途方に暮れています。

Google Apps Script を実行して、Google Firebase Cloud Messaging へのメッセージの送信をテストしています。

私のコード:

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 オブジェクトのように正常に見えます。パラメータも。UrlFetchApp は、JSON 表記の String ではなく、Javascript オブジェクトを取ります。ただし、「JSON.stringify(params)」を試してみたところ、エラーが発生しました。私は何を間違えましたか?

注: デバッガーで一時停止すると、params は次のようになります。

{"headers":{"Content-Type":"application/json","Authorization":"key=AbCdEfG"},"method":"post","payload":{"data":{"message" :"これがメッセージです"},"to":"ZyXwVuT:ToKeNtOkEnToKeNtOkEnToKentOkEn"}}

4

1 に答える 1

7

https://stackoverflow.com/a/10894233/3576831のおかげで、問題を発見しました

「ペイロード」パラメータは、 https ://developers.google.com/apps-script/class_urlfetchapp?hl=fr-FR#fetch で指定されている文字列である必要があります。

スクリプトのこのセクションを調整すると、次のようになります。

var params = {
  headers: headers,
  method: "post",
  payload: JSON.stringify(payload)
};
于 2016-04-10T01:33:17.607 に答える