Жетон на предъявителя Firebase с детской площадки OAuth2 - PullRequest
0 голосов
/ 20 ноября 2018

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

Я специально тестирую Http v1 Api и ищу, как авторизоватьсязапрос .

Что мне нужно, чтобы получить право, так это получить токен OAuth2 для использования в Postman, что я должен быть в состоянии сделать на игровой площадке OAuth 2.0 , хотя яне знаю как.

У меня есть файл privatkey.json, который я скачал с консоли Firebase, мне просто нужно знать, как его использовать, чтобы получить токен, который я бы добавил в качестве заголовка авторизации для носителя.мои POST запросы

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

Я создал небольшой проект на hithub , который включает в себя как коллекцию почтальонов, так и проект среды и nodejs, который использует загруженный service-key.json для создания токена доступа, который решает мою проблему, описанную выше.Это не так красиво, как использование только почтальона (что мне кажется невозможным), но это работает достаточно хорошо, поскольку токены доступа живут около часа.

0 голосов
/ 21 ноября 2018

Мне удалось отправить сообщение через HTTP API FCM v1, запросив следующие области действия на детской площадке OAuth2 :

email, https://www.googleapis.com/auth/firebase.messaging

Specifying scopes in OAuth2 platground

После авторизации я обменял код авторизации на токены обновления и доступа.

Exchanging authorization code for tokens

Затем я передал получившийся токен доступа в вызов с FCM:

curl -X POST -H "Authorization: Bearer MY_ACCESS_TOKEN" -H "Content-Type: application/json" -d '{"message":{
  "notification": {
    "title": "FCM Message",
    "body": "This is an FCM Message",
  },
  "token": "MY_DEVICE_TOKEN"
  }
}' https://fcm.googleapis.com/v1/projects/MY_PROJECT_ID/messages:send

В приведенном выше запросе CURL замените следующие заполнители соответствующими значениями для вас:

  • MY_PROJECT_ID - этоИдентификатор проекта Firebase, который можно получить на странице настроек проекта в консоли Firebase
  • MY_DEVICE_TOKEN - это регистрационный токен устройства, на которое вы хотите отправить сообщение.Для веб-клиента см. , как получить текущий регистрационный токен .
  • MY_ACCESS_TOKEN - это токен доступа OAuth2, полученный с игровой площадки OAuth2, с помощью описанных выше шагов.

Документация FCM по аутентификации запросов FCM v1 может сбивать с толку, поскольку она вызывает только маркер OAuth2.Сначала он генерирует самоподписанный JWT (JSON Web Token), вызывая new google.auth.JWT(...).Это включает в себя загрузку закрытого ключа и генерацию JWT локально через библиотеку JWT.

Самоподписанный JWT затем передается в jwtClient.authorize(...), который возвращает токены, включая access_token.Последний - токен доступа OAuth2, аналогичный тому, который мы получили выше.

...