Отправка Push через Почтальон с помощью Firebase Messaging

Я пытаюсь использоватьПочтальон отправить одно Push-уведомление, используяFirebase Служба облачных сообщений.

Это рабочийcURL Команда для той же цели, по которой я использую в качестве ссылки.

curl -X POST --header "Authorization: key=<API_ACCESS_KEY>" --Header "Content-Type: application/json" https://fcm.googleapis.com/fcm/send -d "{\"to\":\"<YOUR_DEVICE_ID_TOKEN>\",\"notification\":{\"body\":\"Firebase\"} \"priority":\"10"}"

Что я сделал до сих пор ..

1 - УстановитеЗаголовки надлежащим образом

2- Втело , Я используюraw

{
    "to" : "<YOUR_DEVICE_ID_TOKEN>"
    , 

    "notification": {
    "body": "Firebase Cloud Message"
  }

  }

При выполнении я возвращаюсь401 - Unauthorized.

Чего не хватает, чтобы правильно отправить push-уведомление?

 Vinod Kumar Marupu02 нояб. 2016 г., 18:02
{"multicast_id": 4790719999662534961, "success": 0, "fail": 1, "canonical_ids": 0, "results": [{"error": "InvalidRegistration"}]} получил эту ошибку
 Alireza Noorali03 июн. 2019 г., 12:19
Эта статья будет полезна для вас:medium.com/android-school/...

Ответы на вопрос(6)

метод тестирования push-уведомлений через Postman изменился, и существующие решения касались только устаревшего метода тестирования push-уведомлений:https://firebase.google.com/docs/cloud-messaging/send-message

Чтобы протестировать Postman с API FCM HTTP v1, вам нужно сначала получить недолговечный токен Oauth 2. Вы можете создать один согласно информации на сайте Firebase здесь:https://firebase.google.com/docs/cloud-messaging/auth-server

Я сгенерировал мой, используя Python, используя приведенный ниже код - не забудьте pip установить пакет, чтобы вы могли успешно импортировать пакет в свой код:

from oauth2client.service_account import ServiceAccountCredentials

def _get_access_token():
  """Retrieve a valid access token that can be used to authorize requests.

  :return: Access token.
  """
  credentials = ServiceAccountCredentials.from_json_keyfile_name(
      'service-account.json', FCM_SCOPE)
  access_token_info = credentials.get_access_token()
  return access_token_info.access_token

Получив токен, вы можете вставить его в свой почтальон под авторизацией:

ВАЖНЫЙ:

В моем случае я изо всех сил пытался заставить это работать, поскольку я пытался протестировать запланированное задание, которое собиралось отправлять push-уведомления каждые несколько минут в FCM. Я распечатал токен в своих журналах, а затем передал этот токен моему почтальону для тестирования, не понимая, что он уже использовался в запланированных вызовах FCM.

В этом случае, поскольку он уже использовался, токен больше не будет действительным и все мои тесты Почтальона не пройдены. В этом случае вам нужно будет сгенерировать свежие токены для ваших тестов Postman.

 choopage - Jek Bao08 мая 2018 г., 09:07
Саймон прав. Старый способ больше не подходит.

Тело - to является идентификатором токена (должно быть сгенерировано через экземпляр токена).

{
   "to": "cpa8cZPjq-w:APA91bF122f1Rnhu9v47bL
   YMajaNTHAIU5SzItDwTy9o2MCIveG0PlK78VPvp3d
   CqjwnUKZ4
   ngi1trSyM3_aXttW62iknFfbPGtjRLhZr6wq-3qFdboz8gzdOGPz**********",

   "notification": {

    "body": "Hello",
    "title": "This is test message."
   }
   }

заголовок: должен иметь авторизацию: ключ сервера

Тип контента: приложение / JSONпосле публикации здесь сообщение об успехе:

 Ravi01 июн. 2017 г., 17:07
работал как шарм !!!
 phpdroid25 июн. 2019 г., 11:32
@CoolMind прошло 2 года, спасибо за предложения!
 Asymptote24 июл. 2017 г., 15:54
как получить токен? есть ли API?
 praveen dewangan24 июл. 2017 г., 18:58
Прочитайте документацию для разработчиков Firebase Android
 praveen dewangan09 сент. 2017 г., 06:52
Привет phpdroid. Вам нужно проверить полное тело, сообщение передается на ваш мобильный, но он не может выбрать тело.
 DevOma14 дек. 2018 г., 12:41
как отправить всем пользователям, установившим приложение, вместо отправки в тему?
 phpdroid23 авг. 2017 г., 10:09
получаю успех = 1, но не получаю уведомления на мобильный
 CoolMind25 июн. 2019 г., 11:30
@phpdroid, см.pluralsight.com/guides/..., freecodecamp.org/news/... и много других.
Решение Вопроса

Правильный способ настройкиAuthorization ключ в заголовке

key=<API_ACCESS_KEY>

и не только

<API_ACCESS_KEY>

Глупая ошибка, но так как это может быть полезно для тестирования Firebase Messaging с почтальоном, я оставляю вопрос открытым.

 CoolMind25 июн. 2019 г., 17:40
Я вижу, у вас уже есть--header "Authorization: key=<API_ACCESS_KEY> в curl и неправильный заголовок в Почтальон.

Авторизация: ** ключ = ** abcdefghijklmnopr2qrst253uv124wxyz_9shg

он завершается ошибкой, если вы не включите заголовок типа контента, говорящий: Error = MissingRegistration

Проверьте уведомление FCM с POSTMAN!

Отправить сообщение данных с использованием протокола HTTP с POSTMANВам необходимо скопировать ключ сервера Legecy из Firebase Console> Настройки проекта> Облачные сообщения

Примечание: Firebase обновил ключи нашего сервера до новой версии. Вы можете продолжать использовать свой старый ключ сервера, но рекомендуется обновить его до последней версии.

Выберите POST. Введите URL запроса какhttps://fcm.googleapis.com/fcm/send

Добавление авторизации заголовков:key=<legacy_server_key> ИЛИ ЖЕAuthorization: key=<server_key> а такжеContent-Type: application/json.

Теперь выберитеТело> raw> JSON (приложение / JSON) и добавьте следующий код:

    {
         "to" : "YOUR_FCM_TOKEN_WILL_BE_HERE",
         "collapse_key" : "type_a",
         "notification" : {
             "body" : "Body of Your Notification",
             "title": "Title of Your Notification"
         },
         "data" : {
             "body" : "Body of Your Notification in Data",
             "title": "Title of Your Notification in Title",
             "key_1" : "Value for key_1",
             "key_2" : "Value for key_2"
         }
    }

Я создал коллекцию POSTMAN для вас,Беги в Почтальон напрямую.

Надеюсь, это поможет вам.

 CoolMind25 июн. 2019 г., 12:01
Спасибо! По крайней мере, он показывает более подходящую ошибку, чем «Неверный (устаревший) ключ сервера ...».
 CoolMind25 июн. 2019 г., 17:33
Это работает, если вы используете ключ сервера или устаревший ключ сервера из настроек Cloud Messaging (начиная с «AAAA» или «Alza»).

Ваш ответ на вопрос