Мне удалось отправить сообщение через HTTP API FCM v1, запросив следующие области действия на детской площадке OAuth2 :
email, https://www.googleapis.com/auth/firebase.messaging
После авторизации я обменял код авторизации на токены обновления и доступа.
Затем я передал получившийся токен доступа в вызов с 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, аналогичный тому, который мы получили выше.