Используйте API FCM HTTP v1 с токенами доступа OAuth 2.

1. Введение

По сравнению с устаревшим API FCM, API FCM HTTP v1 обеспечивает более безопасную модель авторизации с использованием кратковременных токенов доступа. Шаги по созданию токена доступа для API FCM v1 существенно отличаются от шагов для устаревшего API.

Эта лаборатория кода проведет вас через процесс настройки на стороне клиента и сервера, чтобы включить отправку push-уведомлений в приложение Android с помощью API FCM HTTP v1. В нем освещен ключевой этап создания учетных данных для API версии 1.

Более подробную информацию можно найти по адресу:

Предварительные условия

  • Базовое понимание разработки на Java и Android.

Что вы узнаете

  • Подробные шаги настройки на стороне клиента и сервера для включения отправки push-уведомлений в ваше приложение Android с помощью API FCM HTTP v1.
  • Генерация учетных данных для API HTTP v1 с использованием учетных записей служб.
  • Отправка тестовых сообщений через HTTP v1 API

Что вам понадобится

Последняя стабильная версия Android Studio.

Одно из следующих устройств:

Среда разработки Java или редактор кода по вашему выбору.

2. Настройка проекта Firebase и приложения Android.

По завершении лабораторной работы по коду вы сможете отправлять сообщения в свое приложение с помощью Firebase Cloud Messaging. Прежде чем сделать это, вам необходимо создать проект Firebase. Эта лаборатория кода также предоставляет приложение для Android, содержащее пример кода для интеграции с FCM.

Настройка проекта Firebase

  • Следуйте инструкциям «Шаг 1. Создайте проект Firebase », чтобы создать собственный проект Firebase для этой лаборатории кода.

Настройка приложения для Android

Пример приложения Android, представленный в этой лаборатории кода, уже интегрирован с FCM. После запуска он зарегистрируется на сервере FCM и подпишется на тему. На последующих этапах этой лаборатории вы отправите сообщение в тему, и ваше приложение его получит.

3. Настройте сервер приложений

Теперь, когда ваше приложение настроено, вам необходимо загрузить пример серверного кода для отправки сообщений в ваше приложение с помощью API FCM v1. Этот код загружает учетные данные API (описанные в следующем разделе) для создания токена доступа. Затем он отправляет сообщение в ваше приложение, используя обмен сообщениями по темам FCM.

  • Импортируйте код стартового сервера, загрузив проект Github . Проект «Обмен сообщениями» — это Java-проект на основе Gradle, зависящий от Firebase-admin SDK, который обеспечивает функциональность для отправки сообщений.

Более подробную информацию о том, как сервер приложений должен работать с FCM, можно найти в документе Ваша серверная среда и FCM .

4. Получите учетные данные v1.

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

  1. Настройте учетную запись службы Firebase, чтобы позволить Firebase Admin SDK авторизовать вызовы API FCM. Откройте «Настройки проекта» в консоли Firebase и выберите вкладку «Учетные записи служб» . Нажмите Создать новый закрытый ключ , чтобы загрузить фрагмент конфигурации. Обрезанный снимок экрана, на котором показан фрагмент конфигурации Admin SDK компонента «Служебные учетные записи» на странице настроек проекта.
  2. В загруженном проекте Github переименуйте загруженный файл в service-account.json и скопируйте его в messaging/ path проекта.
  3. Метод getAccessToken() (показанный ниже) в классе Messaging.java генерирует токен OAuth2, действительный в течение 1 часа.
private static String getAccessToken() throws IOException {
  GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json")).createScoped(Arrays.asList(SCOPES));
  googleCredentials.refresh();
  return googleCredentials.getAccessToken().getTokenValue();
}
  1. Измените основной метод, добавив следующую строку:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. Перейдите в каталог сообщений/проекта вашего терминала и введите:
./gradlew run -Pmessage=common-message

чтобы распечатать токен OAuth2.

Дополнительную информацию можно найти в разделе Авторизация запросов на отправку .

5. Отправьте сообщение с помощью REST API.

Теперь вы готовы отправить сообщение через API HTTP v1. Выполните следующие действия:

  • Чтобы добавить токен доступа в заголовок HTTP-запроса:
  • Добавьте токен в качестве значения заголовка авторизации в формате Authorization: Bearer <access_token>
  • Сделайте HTTP-запрос к API FCM v1, используя Curl:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $OAuth2_token" -H "X-GFE-SSL: yes" -d  "{\"message\": {\"topic\": \"$topic_name\", \"notification\": {\"title\": \"breaking news\", \"body\": \"This is breaking news\"}}}" https://fcm.googleapis.com/v1/projects/[PROJECT_NAME]/messages:send

Вышеуказанный $topic_name можно найти в коде приложения Android, упомянутом в проекте Firebase, и в настройке приложения Android. По умолчанию это "weather" .

  • После успешной доставки сообщения на экране должно появиться всплывающее уведомление, подобное изображению ниже:

54ae84ece22202cd.png

6. Заключение

Поздравляем! Вы успешно завершили работу над кодом, чтобы:

  • Настройка проекта Firebase
  • Интегрируйте Firebase с приложением для Android
  • Создайте учетные данные для API FCM HTTP v1.
  • Отправьте сообщение в свое приложение через API FCM HTTP v1.

Для изучения расширенных функций, предлагаемых FCM, полезны следующие ссылки: