Utiliser l'API FCM HTTP v1 avec des 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é à l'aide de jetons d'accès éphémères. 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 guide tout au long du processus de configuration côté client et serveur pour permettre l'envoi de notifications push à une application Android à l'aide de l'API FCM HTTP/1. Il met en évidence l'étape clé de la génération d'identifiants pour l'API v1.

Pour en savoir plus, consultez :

Prérequis

  • Connaissances de base en développement Java et Android

Points abordés

  • Étapes détaillées de la configuration côté client et serveur pour activer l'envoi de notifications push à votre application Android à l'aide de l'API FCM HTTP/1.1
  • 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 d'un projet Firebase et d'une application Android

À la fin de l'atelier de programmation, vous pourrez envoyer des messages à votre application à l'aide de Firebase Cloud Messaging. Avant cela, vous devez créer un projet Firebase. Cet atelier de programmation fournit également une application Android contenant un exemple de code à intégrer à FCM.

Configurer un projet Firebase

  • Suivez l'étape 1 : Créer un projet Firebase pour créer votre propre projet Firebase pour cet atelier de programmation.

Configurer l'application Android

L'application Android exemple fournie dans cet atelier de programmation est déjà intégrée à FCM. Après le démarrage, il s'enregistre auprès du serveur FCM et s'abonne à 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 thématique FCM.

  • Importez le code de démarrage du serveur 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 permettant d'envoyer des messages.

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

4. Obtenir des identifiants v1

L'API FCM HTTP v1 utilise des jetons d'accès éphémères selon le 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 susceptible d'être divulgué. Cette section explique comment créer des identifiants pour 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 les 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é service-account.json et copiez-le dans le chemin d'accès messaging/ du projet.
  3. La méthode getAccessToken() (affichée 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/ du projet dans votre terminal, puis saisissez la commande suivante :
./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 en tant que 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. Par défaut, il s'agit de "weather".

  • Une fois un message envoyé, une notification devrait s'afficher à l'écran, comme sur l'image 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 FCM HTTP v1

Pour découvrir les fonctionnalités avancées proposées par FCM, les références suivantes sont utiles :