Utiliser l'API FCM HTTP v1 avec des jetons d'accès OAuth 2

1. Introduction

Par rapport à l'ancienne API FCM, l'API HTTP v1 de FCM fournit un modèle d'autorisation plus sécurisé utilisant des jetons d'accès de courte durée. La procédure de génération du jeton d'accès pour l'API FCM v1 est très différente de celle de l'ancienne API.

Cet atelier de programmation vous explique comment configurer le côté client et le côté serveur pour envoyer des notifications push à une application Android à l'aide de l'API FCM HTTP v1. Il met en évidence l'étape clé de la génération d'identifiants pour l'API v1.

Pour en savoir plus:

Prérequis

  • Connaissances de base en développement Java et Android

Points abordés

  • Étapes détaillées de configuration côté client et serveur pour activer l'envoi de notifications push à votre application Android à l'aide de l'API FCM HTTP v1
  • Génération d'identifiants pour l'API HTTP v1 à l'aide de comptes de service
  • Envoyer des messages de test via l'API HTTP v1

Prérequis

La dernière version stable d'Android Studio

L'un des appareils suivants:

Un environnement de développement Java ou un éditeur de code de votre choix

2. Configuration du projet Firebase et de l'application Android

À la fin de l'atelier de programmation, vous serez en mesure d'envoyer des messages à votre application à l'aide de Firebase Cloud Messaging. Pour ce faire, vous devez créer un projet Firebase. Cet atelier de programmation fournit également une application Android contenant un exemple de code à intégrer à FCM.

Configuration du projet Firebase

  • Suivez la section "Étape 1: Créer un projet Firebase" pour créer votre propre projet Firebase pour cet atelier de programmation.

Configuration de l'application Android

L'application Android exemple fournie dans cet atelier de programmation est déjà intégrée à FCM. Une fois démarré, il s'enregistrera auprès du serveur FCM et s'abonnera à un sujet. Dans les étapes suivantes de cet atelier de programmation, vous enverrez un message de sujet au sujet, et votre application le recevra.

3. Configurer le serveur d'application

Maintenant que votre application est configurée, vous devez télécharger un exemple de code côté serveur pour envoyer des messages à votre application à l'aide de l'API FCM v1. Ce code charge les identifiants de l'API (décrits dans la section suivante) pour générer un jeton d'accès. Il envoie ensuite un message à votre application à l'aide de la messagerie de sujets FCM.

  • Importez le code du serveur de démarrage en téléchargeant le projet GitHub. Le projet "messaging" est un projet Java basé sur Gradle avec une dépendance au SDK firebase-admin, qui fournit des fonctionnalités permettant d'envoyer des messages.

Pour en savoir plus sur le fonctionnement d'un serveur d'application avec FCM, consultez le document Votre environnement de serveur et FCM.

4. Obtenir des identifiants v1

L'API FCM HTTP v1 utilise des jetons d'accès éphémères conformément au modèle de sécurité OAuth2. Par rapport à la clé API statique utilisée dans l'ancienne API FCM, le jeton d'accès éphémère est moins exposé au risque de fuite d'identifiants. Cette section décrit la procédure à suivre pour créer des identifiants permettant de générer le jeton d'accès utilisé pour appeler l'API.

  1. Configurez un compte de service Firebase pour permettre au SDK Firebase Admin d'autoriser les appels aux API FCM. Ouvrez Paramètres du projet dans la console Firebase, puis sélectionnez l'onglet Comptes de service. Cliquez sur Générer une nouvelle clé privée pour télécharger l'extrait de configuration. Capture d'écran recadrée mettant en évidence l'extrait de configuration du SDK Admin du composant "Comptes de service" de la page "Paramètres du projet"
  2. Dans le projet GitHub téléchargé, renommez le fichier téléchargé en service-account.json et copiez-le dans le chemin d'accès messaging/ du projet.
  3. La méthode getAccessToken() (ci-dessous) de la classe Messaging.java génère un jeton OAuth2 valide pendant une heure.
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. Modifiez la méthode principale pour ajouter la ligne suivante:
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. Accédez au répertoire de messagerie/ projet dans votre terminal, puis saisissez:
./gradlew run -Pmessage=common-message

pour imprimer le jeton OAuth2.

Pour en savoir plus, consultez Autoriser les demandes d'envoi.

5. Envoyer un message avec l'API REST

Vous êtes maintenant prêt à envoyer un message via l'API HTTP v1. Suivez les instructions ci-dessous :

  • Pour ajouter le jeton d'accès à un en-tête de requête HTTP:
  • Ajoutez le jeton comme valeur de l'en-tête d'autorisation au format Authorization: Bearer <access_token>.
  • Envoyez une requête HTTP à l'API FCM v1 à l'aide de 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

Le $topic_name ci-dessus se trouve dans le code de l'application Android mentionné dans la configuration du projet Firebase et de l'application Android. La valeur par défaut est "weather".

  • Une fois le message envoyé, une notification devrait s'afficher à l'écran, semblable à celle ci-dessous:

54ae84ece22202cd.png

6. Conclusion

Félicitations ! Vous avez terminé l'atelier de programmation pour:

  • Configurer un projet Firebase
  • Intégrer Firebase à une application Android
  • Créer des identifiants pour l'API FCM HTTP v1
  • Envoyer un message à votre application via l'API HTTP v1 de FCM

Pour explorer les fonctionnalités avancées offertes par FCM, consultez les références suivantes: