"JSON_PARSING_ERROR: Unexpected character (d) at position 0." when sending GCM request from GAS
"JSON_PARSING_ERROR: Unexpected character (d) at position 0." when sending GCM request from GAS
这似乎与许多其他问题非常相似,而且该错误似乎很明显表明我的 JSON 有效负载有问题。但是我不知道为什么。
我正在 运行使用 Google Apps 脚本来测试向 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 采用 Javascript 对象,而不是 JSON 表示法中的字符串。但是我确实尝试了 "JSON.stringify(params)" 并且我得到了一个错误。我做错了什么?
注意:当我在调试器中暂停时,params 看起来像这样:
{"headers":{"Content-Type":"application/json","Authorization":"key=AbCdEfG"},"method":"post","payload":{"data":{"message":"This
is the message"},"to":"ZyXwVuT:ToKeNtOkEnToKeNtOkEnToKeNtOkEn"}}
我发现了这个问题,感谢
the 'payload' parameter must be a string as specified here:
https://developers.google.com/apps-script/class_urlfetchapp?hl=fr-FR#fetch.
调整脚本的这一部分有效:
var params = {
headers: headers,
method: "post",
payload: JSON.stringify(payload)
};
这似乎与许多其他问题非常相似,而且该错误似乎很明显表明我的 JSON 有效负载有问题。但是我不知道为什么。
我正在 运行使用 Google Apps 脚本来测试向 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 采用 Javascript 对象,而不是 JSON 表示法中的字符串。但是我确实尝试了 "JSON.stringify(params)" 并且我得到了一个错误。我做错了什么?
注意:当我在调试器中暂停时,params 看起来像这样:
{"headers":{"Content-Type":"application/json","Authorization":"key=AbCdEfG"},"method":"post","payload":{"data":{"message":"This is the message"},"to":"ZyXwVuT:ToKeNtOkEnToKeNtOkEnToKeNtOkEn"}}
我发现了这个问题,感谢
the 'payload' parameter must be a string as specified here: https://developers.google.com/apps-script/class_urlfetchapp?hl=fr-FR#fetch.
调整脚本的这一部分有效:
var params = {
headers: headers,
method: "post",
payload: JSON.stringify(payload)
};