Firebase обмена сообщениями API PHP подписаться на тему 411 ошибка

Я пытаюсь внедрить уведомления в мое веб-приложение. У меня есть этот php-файл, в который я отправляю уведомления:

<?php
function sendGCM($title,$message, $id) {
$url = 'https://fcm.googleapis.com/fcm/send';

$fields = array (
'registration_ids' => array (
$id
),
"notification" => array(
"title" => $title,
"body" => $message,
"click_action" => "https://google.com")
);
$fields = json_encode ( $fields );

$headers = array (
'Authorization: key=' . $MY_KEY,
'Content-Type: application/json'
);

$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $fields );

$result = curl_exec ( $ch );
echo $result;
curl_close ( $ch );
}
?>

Теперь я хочу отправить уведомление по теме вместо отдельных идентификаторов. На эта страница он показывает, как вы можете подписать идентификатор на тему. Вот функция, которую я создал для этого:

function createTopic($topic,$id) {
$url = 'https://iid.googleapis.com/iid/v1/' . $id . '/rel/topics/' . $topic;
$headers = array (
'Authorization: key=MY_KEY'
);
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_POST, true );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );

$result = curl_exec ( $ch );
echo $result;
curl_close ( $ch );
}

Я получаю эту ошибку от Google и не могу понять, что происходит не так:

  1. Это ошибка.

Для запросов POST требуется заголовок Content-length. Это все, что мы знаем.

Любая помощь?

1

Решение

пример в документации показывает использование Content-Length заголовок:

https://iid.googleapis.com/iid/v1/nKctODamlM4:CKrh_PC8kIb7O...clJONHoA/rel/topics/movies
Content-Type:application/json
Content-Length: 0
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

Добавьте это к вашему запросу:

$headers = array (
'Authorization: key=' . $MY_KEY,
'Content-Length: 0'
);
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]