Что такое часть авторизации в HTTP-запросе сообщения Google Firebase Downstream?

Я хочу попытаться отправить сообщение с помощью службы обмена сообщениями Google FCM, и, как говорится в документе, http-запрос должен быть примерно таким:

https://fcm.googleapis.com/fcm/send
Content-Type:application/json
Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA

{ "data": {
    "score": "5x1",
    "time": "15:10"
  },
  "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1..."
}

Моя проблема в том, что я не знаю, каким должно быть значение Authorization, и когда я удаляю этот заголовок и делаю запрос, я получаю сообщение об ошибке 401:Unauthorized. Я думаю, что это должен быть какой-то ключ API или что-то в этом роде, но я не могу найти его в своем проекте. Может кто-нибудь помочь мне?

PS: в целях тестирования в настоящее время я использую этот сайт для отправки сообщения на свое устройство.




Ответы (3)


Согласно о Firebase Cloud Messaging Server документация:

Аутентификация

Чтобы отправить сообщение, сервер приложений отправляет запрос POST. Например:

https://fcm.googleapis.com/fcm/send

Запрос сообщения состоит из двух частей: заголовка HTTP и тела HTTP.

Заголовок HTTP должен содержать следующие заголовки:

  • Авторизация: key=YOUR_SERVER_KEY

Убедитесь, что это ключ сервера, значение которого доступно в консоли проекта Firebase в разделе Настройки проектаОбмен сообщениями в облаке. Ключи клиента или любые другие ключи отклоняются FCM.

  • Content-Type: application/json для JSON; application/x-www-form-urlencoded;charset=UTF-8 для простого текста.

     If Content-Type is omitted, the format is assumed to be plain text.
    

ОБНОВЛЕНИЕ (16.11.2016)

Возможно, вам следует рассмотреть возможность использования токена FCM вместо ключей сервера, как указано в примечании на следующем снимке экрана.

введите здесь описание изображения


ОБНОВЛЕНИЕ (08.12.2016)

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

введите здесь описание изображения

person BNK    schedule 07.06.2016
comment
Большое спасибо. На мой взгляд, документация не очень хорошо организована, но еще раз спасибо за ваш ответ. - person roostaamir; 07.06.2016
comment
Эй, @BNK, не могли бы вы опубликовать пример кода curl или httpie? Я не могу заставить авторизацию работать. Спасибо! - person FredLoh; 09.06.2016
comment
@FredLoh по ссылке Google в моем ответе, при проверке действительности ключа сервера, вы найдете пример curl - person BNK; 09.06.2016
comment
Я получаю HTTP/1.1 400 Bad Request, мое сообщение: fcm.googleapis.com/fcm/send Content-Type:application/json Authorization:key=GduFdg......wK8B4Uwk2xxx... { data: { message: post сообщение, версия: 2.0: }, кому: fasdsadasdsadasj9N40:APA91b....5nX--HG.....7wyTCN } что не так? - person Sagar Patil; 18.10.2016
comment
@SagarPatil, у вас 400, а не 401 в качестве ОП, так что к вашему сведению firebase.google.com/docs/cloud-messaging/ - person BNK; 19.10.2016

я также столкнулся с этой ошибкой. Проблема с ключом сервера. Не используйте ключ API из файла google-services.json.

Вы должны использовать ключ API сервера из проекта консоли Firebase, на вкладке ключей проекта облачных сообщений: https://console.firebase.google.com/project/firebase-probiz/settings/cloudmessaging

person Leo Much    schedule 24.07.2016

Это ключ вашего сервера, который вы можете просмотреть в консоли проекта console.developers.google.com или Firebase в разделе «Настройки проекта»> «Обмен сообщениями в облаке». Обратите внимание на ключ, который автоматически создается службами Google. Вы должны добавить IP-адрес в G.Console, чтобы ограничить использование.

Плюс не забывайте о Content-Type: application/json, иначе вы получите Error=MissingRegistration.

person Sergio Kosik    schedule 26.07.2016