#javascript #rest
Вопрос:
Я пытаюсь отправить сообщение на свой телефон через rest.
я пытался:
async function SendPush(event)
{
event = event || window.event;
event.preventDefault();
var tokenID = "xxx"
let url = "https://fcm.googleapis.com/fcm/send";
let serverkey = 'yyy';
let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('Authorization', 'key=' serverkey);
var dict = {
to : tokenID
};
let body = Object.entries(dict).map(([key, value]) =>
encodeURIComponent(`params[${key}]`) '=' encodeURIComponent(value)).join('amp;');
var res
await fetch(url, {
method: 'POST',
headers: {
Authorization: 'key=' serverkey,
"Content-Type": "application/json"
},
body: body
}).then(response => response.json())
.then(data =>
{
//console.log(data);
res = data; // cannot return here. must await or something idk
});
console.log(res);
}
Этот объект работает на c# и в postman. Я следовал этой конвенции:
URL: https://fcm.googleapis.com/fcm/send
Заголовок:
«Тип содержимого»: «приложение/json», «Авторизация»: «ключ=<Server_key>»
Тело:
{
"to": "<Device FCM token>",
"notification": {
"title": "Check this Mobile (title)",
"body": "Rich Notification testing (body)",
"mutable_content": true,
"sound": "Tri-tone"
},
"data": {
"url": "<url of media image>",
"dl": "<deeplink action on tap of notification>"
}
}
Но я получаю:
JSON.parse: unexpected character at line 1 column 1 of the JSON data
Можете ли вы сказать мне, в чем моя ошибка?
Комментарии:
1. Проверьте, что на самом
response
деле содержалось. (Войдите в консоль, прежде чем пытаться расшифровать его как JSON или проверить с помощью инструментов разработки браузера.)
Ответ №1:
пробовать
let body = JSON.stringify(dict)
вместо
let body = Object.entries(dict).map(([key, value]) =>
encodeURIComponent(`params[${key}]`) '=' encodeURIComponent(value)).join('amp;');
Тело в извлечении должно соответствовать заголовку «Тип содержимого»