Сохранить JSON-ответ в Coldfusion - PullRequest
0 голосов
/ 27 декабря 2018

Я хочу отправлять push-сообщения с помощью Firebase Cloud Messaging.Все работает, кроме одного.Я хочу сохранить ответ (см. Ниже) из Firebase, чтобы обновить профиль пользователя в базе данных.Допустим, ответ возвращает ошибку, я хочу отправить этот ответ обратно в мою базу данных.

Чтобы отправить push-сообщение, я использую этот скрипт:

var key = 'my-key';
var to = 'to-key';
var notification = {
   'title': 'Portugal vs. Denmark',
   'body': '5 to 1',
   'icon': 'firebase-logo.png',
   'click_action': 'http://localhost:8081'
};

fetch('https://fcm.googleapis.com/fcm/send', {
   'method': 'POST',
   'headers': {
   'Authorization': 'key=' + key,
   'Content-Type': 'application/json'
},
'body': JSON.stringify({
'notification': notification,
'to': to
 })
 }).then(function(response) {
      console.log(response);
 }).catch(function(error) {
     console.error(error);
 })

Ответ, который я получаюот Firebase есть: response from firebase

Мой вопрос - как мне сохранить (или отправить) этот ответ на мой сервер Coldfusion.Я думал о переписывании сценария для Coldfusion, например:

 <cfscript>
 objResponse = {
  'message':{
         'to':'SOME_TOKEN',
 'notification':{
    'title': 'Portugal vs. Denmark',
    'body': '5 to 1',
    'icon': 'firebase-logo.png',
    'click_action': 'localhost:8081'
   }
   }
  }
  </cfscript> 

  <Cfdump var="#objResponse#" >
  <cfoutput >#SerializeJSON(objResponse)#</cfoutput>

  <cfhttp url="https://fcm.googleapis.com/fcm/send" method="post" result="objGet">
   <cfhttpparam type="header" name="Accept" value="application/json" />
   <cfhttpparam type="header" name="Authorization" value="key=MY_KEY">
   <cfhttpparam type="header" name="Content-Type" value="application/json" />
   <cfhttpparam type="body"   value='#SerializeJSON(objResponse)#'/>
  </cfhttp>

Но это дает мне 400 неверных запросов:

enter image description here

Вкл. https://firebase.google.com/docs/cloud-messaging/http-server-ref#interpret-downstream Я обнаружил, что применяется только для запросов JSON.Указывает, что запрос не может быть проанализирован как JSON или содержит недопустимые поля (например, передача строки, в которой ожидается число).Точная причина сбоя описана в ответе, и проблема должна быть устранена до того, как запрос может быть повторен.

Поэтому я понимаю, что это как-то связано с отправляемым JSON-запросом, но я не могувыяснить, в чем проблема.

1 Ответ

0 голосов
/ 27 декабря 2018

Поскольку вы делаете этот запрос из javascript в своем браузере, вам потребуется добавить некоторый код в обратный вызов .then(), который бы отправлял запрос ajax post на ваш сервер ColdFusion, отправляя данные, которые вы хотите сохранить.

Не уверен, что ваш поток здесь, но вы также можете сделать http-запрос от самого сервера ColdFusion.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...