Utilisez l'API FCM HTTP v1 avec les jetons d'accès OAuth 2

1. Introduction

Par rapport à l'ancienne API FCM, l'API FCM HTTP v1 fournit un modèle d'autorisation plus sécurisé utilisant des jetons d'accès de courte durée. Les étapes de génération du jeton d'accès pour l'API FCM v1 sont très différentes des étapes pour l'API héritée.

Cet atelier de programmation vous guide tout au long du processus de configuration côté client et côté serveur pour permettre l'envoi de notifications push à une application Android à l'aide de l'API HTTP v1 de FCM. Il met en évidence l'étape clé de la génération des informations d'identification pour l'API v1.

De plus amples informations peuvent être trouvées à l'adresse suivante :

Conditions préalables

  • Compréhension de base du développement Java et Android

Ce que vous apprendrez

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

Ce dont vous aurez besoin

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. Projet Firebase et configuration de l'application Android

À la fin de l'atelier de code, vous serez en mesure d'envoyer des messages à votre application à l'aide de Firebase Cloud Messaging. Avant de faire cela, vous devrez 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

Configuration de l'application Android

L'exemple d'application Android fourni dans cet atelier de programmation est déjà intégré à FCM. Après le démarrage, il s'enregistrera auprès du serveur FCM et s'abonnera à un sujet. Au cours des dernières étapes de cet atelier de programmation, vous enverrez un message de sujet au sujet et votre application le recevra.

3. Configurez le serveur d'applications

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 informations d'identification de l'API (décrites 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 thématique 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 sur le SDK Firebase-admin , qui fournit des fonctionnalités pour envoyer des messages.

Plus de détails sur la manière dont un serveur d'applications doit fonctionner avec FCM sont disponibles dans le document Votre environnement de serveur et FCM .

4. Obtenez les informations d'identification v1

L'API FCM HTTP v1 utilise des jetons d'accès de courte durée selon le modèle de sécurité OAuth2. Comparé à la clé API statique utilisée dans l'API héritée de FCM, le jeton d'accès de courte durée est moins sujet au risque de fuite d'informations d'identification. Cette section détaille les étapes de création d'un identifiant 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 d'administration Firebase d'autoriser les appels aux API FCM. Ouvrez les paramètres du projet dans la console Firebase et 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 messaging/ chemin du projet.
  3. La méthode getAccessToken() (illustré ci-dessous) dans la classe Messaging.java génère un jeton OAuth2 valable 1 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. Changez la méthode main pour ajouter la ligne suivante :
public static void main(String[] args) throws IOException {
  System.out.println(getAccessToken());
  ...
}
  1. Accédez au répertoire messagerie/projet de votre terminal et tapez :
./gradlew run -Pmessage=common-message

pour imprimer le jeton OAuth2.

Plus d’informations peuvent être trouvées dans Autoriser les demandes d’envoi .

5. Envoyez un message avec l'API REST

Vous êtes maintenant prêt à envoyer un message via l'API HTTP v1. Suivez les étapes 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 Authorization au format Authorization: Bearer <access_token>
  • Effectuez 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 le projet Firebase et la configuration de l'application Android. Par défaut c'est "weather" .

  • Une fois qu'un message a été envoyé avec succès, vous devriez voir une notification apparaître sur votre écran, similaire à l'image ci-dessous :

54ae84ece22202cd.png

6. Conclusion

Toutes nos félicitations! Vous avez terminé avec succès l'atelier de programmation pour :

  • Configurer un projet Firebase
  • Intégrer Firebase à une application Android
  • Créer des informations d'identification pour l'API FCM HTTP v1
  • Envoyez un message à votre application via l'API FCM HTTP v1

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