СООБЩЕНИЕ Javascript; Ошибка в JSON (FCM, Push на мобильный)

#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;');
 

Тело в извлечении должно соответствовать заголовку «Тип содержимого»