Как я могу отправить уведомление о облачных сообщениях firebase из javascript?

121
13

У меня есть функция javascript:

function sendNotification(){
var url = 'https://fcm.googleapis.com/fcm/send';
var contentType = 'application/json';
var data = {"notification":
{
"title": 'Hello'
},
"to": '/topics/breaking_news'
};

var xhr = new XMLHttpRequest();
xhr.onload = function(){
alert (xhr.responseXML);
}
xhr.open("POST", url, false);
xhr.setRequestHeader('Content-Type', contentType);
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
xhr.setRequestHeader('Access-Control-Allow-Methods', 'POST');
xhr.onreadystatechange = function () {
if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
console.log(xhr.responseText);
} else {
console.log(xhr.responseXML);
}
};
xhr.setRequestHeader('Authorization', 'key=XXXXXXXX');
xhr.send();
}

Но звонок для отправки возвращается 400. Я немного ржавый, не запрограммировав какое-то время, поэтому, если это что-то тривиальное, я извиняюсь. Это было два дня.

спросил(а) 2021-01-19T19:21:29+03:00 9 месяцев, 1 неделя назад
1
Решение
65

Я сделал то же самое с использованием расширения хром. Вот мой код js: -

function send_notification(){

// Set up an asynchronous AJAX POST request
var hr = new XMLHttpRequest();
var url="https://fcm.googleapis.com/fcm/send";

hr.open("POST", url, true);
hr.setRequestHeader('Content-Type','application/json');
hr.setRequestHeader('Authorization','key=your-server-key-here');
var data='{"to" : "your-device-token-here","notification" : {"body" : "great
match!","title" : "Portugal vs. Denmark","content_available" :
true,"priority" : "high"},"data" : {"body" : "great match!","title" :
"Portugal vs. Denmark","content_available" : true,"priority" : "high"}}';

// Handle request state change events
hr.onreadystatechange = function() {
// If the request completed
if (hr.readyState == 4) {
if (hr.status == 200) {
// success
resp=JSON.parse(hr.responseText);
console.log('Response Sent with params '+data );
} else {
// Show what went wrong
console.log('Something went wrong '+ hr.responseText);
}}}; hr.send(data);}

And manifest.json

{
"manifest_version": 2,
"name": "Firebase Auth in Chrome Extension Sample",
"description": "This sample shows how to authorize Firebase in a Chrome
extension using a Google account.",
"version": "2.1",
"icons": {
"128": "firebase.png"
},
"browser_action": {
"default_icon": "firebase.png",
"default_popup": "credentials.html"
},
"background": {
"page": "background.html"
},
"permissions": [
"identity"
],
"content_security_policy":"script-src 'self' https://www.gstatic.com/
https://*.firebaseio.com https://www.googleapis.com; object-src 'self'",
"oauth2": {
"client_id": "oauth-client-id",
"scopes": [
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/userinfo.profile"
]
},
"key": "token-here"
}

Это должно сработать.

ответил(а) 2021-01-19T19:21:29+03:00 9 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема