2016-11-12 254 views
0

我試圖從我的html頁面向Android應用發送Firebase推送通知。我指的是this SO答案來執行它。這裏是我的代碼:從JavaScript/jQuery發送Firebase推送通知

function post() { 
     $.ajax({ 
      type : 'POST', 
      url : "https://fcm.googleapis.com/fcm/send", 
      headers : { 
       Authorization : 'key=' + 'xxxxxxxxxxxx-xxx-xxxxxxxxxxxxxx' 
      }, 
      contentType : 'application/json', 
      data : { 
       "to": "/topics/videos", 
       "data": { 
       "message": "This is push for video!" 
       } 
      }, 
      success : function(response) { 
       console.log(response); 
      }, 
      error : function(xhr, status, error) { 
       console.log(xhr.error);     
      } 
     }); 

目前,我所面臨的問題是在POST request響應我收到以下錯誤:

JSON_PARSING_ERROR:在位置意外的字符(T)0

+2

發送消息到設備需要使用所謂的**服務器密鑰**。顧名思義,這個密鑰應該只存在於服務器端代碼中。將它放在客戶端代碼(例如您正在嘗試的HTML頁面)中意味着您的應用的用戶可以獲取密鑰並用它代表您向所有用戶發送消息。這是一個很大的安全漏洞。 –

+0

@FrankvanPuffelen感謝您分析代碼並讓我知道。我已經考慮過了。這個HTML頁面將是私人的,這意味着只有管理員才能看到它,但我仍然想知道是否有任何事情可以讓我甚至從管理員那裏隱藏這些密鑰。 –

+0

由於需要密鑰來發送消息,因此發送消息的代碼將需要訪問該密鑰。如果您在客戶端的設備上運行此代碼,則他們也可以訪問該密鑰並濫用它。如果你不想這樣做,你將不得不在可信進程中運行代碼(例如一個小型服務器)。 –

回答

1

嘗試致電

JSON.stringify({"to": "videos", "data": {"message": "This is push for video!"}}) 

或添加選項dataType: 'json'

+0

非常感謝! –