2

Dies scheint einer Reihe anderer Fragen sehr ähnlich zu sein und es scheint offensichtlich, dass der Fehler anzeigt, dass etwas mit meinen JSON-Nutzdaten nicht stimmt. Aber ich weiß nicht warum."JSON_PARSING_ERROR: Unerwartetes Zeichen (d) an Position 0." beim Senden der GCM-Anfrage von GAS

Ich verwende ein Google Apps-Skript, um zu testen, ob eine Nachricht an Google Firebase Cloud Messaging gesendet wird.

Mein Code:

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()}; 
} 

Wenn ich dies im Debug-Modus laufen, sieht das Objekt Nutzlast in Ordnung - wie ein normales Objekt Javascript. params auch. UrlFetchApp verwendet ein JavaScript-Objekt und keinen String in JSON-Notation. Ich habe jedoch versucht "JSON.stringify (params)" und ich habe einen Fehler bekommen. Was habe ich falsch gemacht?

Hinweis: params sieht wie folgt aus, wenn ich es im Debugger pausieren:

{"headers":{"Content-Type":"application/json","Authorization":"key=AbCdEfG"},"method":"post","payload":{"data":{"message":"This is the message"},"to":"ZyXwVuT:ToKeNtOkEnToKeNtOkEnToKeNtOkEn"}}

+0

Haben Sie versucht, Payload wie ein js-Objektliteral zu erstellen? – Tyr

+0

Ist das nicht, was ich getan habe? – Scott

Antwort

3

entdeckte ich das Problem, dank https://stackoverflow.com/a/10894233/3576831

the 'payload' parameter must be a string as specified here: https://developers.google.com/apps-script/class_urlfetchapp?hl=fr-FR#fetch .

Einstellen dieser Abschnitt des Skripts funktioniert:

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

Das hat bei mir funktioniert !! In meinem Fall verwende ich Firebase Cloud Messaging. Ich fügte die JSON.stringify yo meine Nutzlast hinzu und fing an zu arbeiten. –

Verwandte Themen