Intereting Posts
Предупреждение: mysql_num_rows () ожидает, что параметр 1 будет ресурсом, boolean given php mysql jquery AJAX автозаполнение чувствительности к регистру NginX выдает ошибку HTTP 499 через 60 секунд, несмотря на конфигурацию. (PHP и AWS) Включает ли Google crawl / require файлы в PHP? PHP – обработка недопустимого XML Zend Framework 2 – аннотационные формы не работают как изменить опцию выбора списка при изменении другого списка выбора? как получить дату из базы данных в html datepicker обновление $ _POST и переход на php через jquery без отправки preg_replace: замена с использованием% Сертификат peer не может быть аутентифицирован с помощью известных сертификатов CA с использованием расширения PHP OAuth получить категорию третьего уровня в opencart Хеширование и password_verify Как я могу отлаживать проблемы exec ()? Ошибка компиляции: «g ++: ошибка при попытке выполнить« cc1plus »: execvp: нет такого файла или каталога"

Firebase MismatchSenderID, когда ключ авторизации – это мой ключ сервера

Действительно странно, и никто никогда не спрашивал об этом.

Я получаю MismatchSenderId как ошибку с моим ключом сервера как мой ключ авторизации (ключ сервера). С другой стороны, я получаю успех в качестве результата возврата от push_notification (), если токен моего устройства как мой ключ авторизации, но на моем устройстве не получено уведомление.

Я уверен, что мой токен прав, потому что я могу отправить на одно устройство с токеном в консоли firebase (одно устройство).

Что затем приводит меня к этому другому вопросу , но затем я хотел бы подтвердить этот вопрос, прежде чем переходить к части уведомления

На самом деле я довольно потерян, так как все ошибки MismatchSenderId были устранены с заменой правильного ключа сервера.

  <?php require "dbconfig.php"; $sql = "SELECT token FROM tokendb"; $result = mysql_query($sql) or die($sql."<br/><br/>".mysql_error()); $tokens = array(); while($row = mysql_fetch_assoc($result)) { echo $row['token']; //this shows the same token compared to the token show in logcat(visual studio) $tokens[] = $row["token"]; echo '<form id="form1" name="form1" method="post" action="">'. '<p>From<br>'. '<input type="text" size="100" maxlength="100" name="From" id="From" /><br>'. '<p>Title<br>'. '<input type="text" size="100" maxlength="100" name="Title" id="Title" />'. '<br>'. '<input type="submit" name="Send" id="Send" value="Send" />'. '</form>'; } $message = array("message" => "notification test"); $message_status = sendFCMMessage($message, $tokens); echo $message_status; function sendFCMMessage($message,$target){ //FCM API end-point $url = 'https://fcm.googleapis.com/fcm/send'; $fields = array(); $fields['body'] = $message; if(is_array($target)){ $fields['registration_ids'] = $target; }else{ $fields['to'] = $target; } //header with content_type api key $headers = array( 'Content-Type:application/json', 'Authorization:key=********' ); //CURL request to route notification to FCM connection server (provided by Google) $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_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); $result = curl_exec($ch); if ($result === FALSE) { die('Oops! FCM Send Error: ' . curl_error($ch)); } curl_close($ch); return $result; } ?> 

EDIT : этот короткий PHP-код также дает мне ошибку MismatchSenderId

  <?php $ch = curl_init("https://fcm.googleapis.com/fcm/send"); $header=array('Content-Type: application/json', "Authorization: key=***(serverkey from project)"); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false ); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, "{ \"notification\": { \"title\": \"Test desde curl\", \"text\": \"Otra prueba\" }, \"to\" : \"my device's token\"}"); curl_exec($ch); curl_close($ch); ?> 

ОБНОВИТЬ

Удаление и повторная установка приложения разрешили проблему.

Ошибка MismatchSenderId возникает, когда вы пытаетесь отправить маркер регистрации, связанный с другим отправителем (Project). Из документов:

Маркер регистрации привязан к определенной группе отправителей. Когда клиентское приложение регистрируется для FCM, оно должно указать, какие отправители могут отправлять сообщения. Вы должны использовать один из этих идентификаторов отправителя при отправке сообщений в клиентское приложение. Если вы переключитесь на другого отправителя, существующие токены регистрации не будут работать.

Убедитесь, что ключ сервера, который вы используете, связан с тем же проектом отправителя, с которым связан токен регистрации. Вы можете сделать это, проверив файл google-services.json и посмотрите, соответствует ли идентификатор отправителя идентификатору отправителя, показанному в проекте Firebase Project, который вы используете для отправки сообщения.

Что касается не получения сообщений, немного неясно, какова структура полезной нагрузки, которую отправляет ваш код. Попробуйте проверить, является ли это правильно структурированной полезной нагрузкой сообщения с полезной нагрузкой на notification и / или data .

Заставьте вас взять серверный ключ с правильного места. Теперь немного сложно получить ключ сервера для уведомления от firebase.

Вот шаги:

GO TO CONSOLE -> ВАШ ПРОЕКТ -> НАСТРОЙКИ ПРОЕКТА -> СООБЩЕНИЕ ОБЛИЦОВОК (вторая вкладка)

И возьмите свой ключ сервера и идентификатор отправителя, который будет работать для вас.

Удалите приложение и установите его и попробуйте.