Aller au contenu principal

Configuration Firebase Cloud Messaging (API V1)

Ce guide explique comment configurer Firebase Cloud Messaging avec la nouvelle API V1.

🔑 Étape 1 : Récupérer les credentials Firebase

Via Firebase Console (Recommandé)

  1. Allez sur Firebase Console
  2. Sélectionnez votre projet
  3. Cliquez sur l'icône ⚙️ > Paramètres du projet
  4. Allez dans l'onglet Comptes de service
  5. Cliquez sur Générer une nouvelle clé privée
  6. Téléchargez le fichier JSON (ex: kazacalendar-firebase-adminsdk-xxxxx.json)

Le fichier JSON ressemble à ceci :

{
"type": "service_account",
"project_id": "kazacalendar-xxxxx",
"private_key_id": "xxxxx",
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIE...",
"client_email": "firebase-adminsdk-xxxxx@kazacalendar-xxxxx.iam.gserviceaccount.com",
"client_id": "xxxxx",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/..."
}

📦 Étape 2 : Configurer le secret dans Supabase

Option A : Via Supabase CLI (Recommandé)

# Lire le contenu du fichier JSON
cat kazacalendar-firebase-adminsdk-xxxxx.json

# Configurer le secret (coller tout le contenu JSON)
supabase secrets set FIREBASE_SERVICE_ACCOUNT='{"type":"service_account","project_id":"..."}'

Option B : Via Dashboard Supabase

  1. Allez dans votre projet Supabase
  2. Settings > Edge Functions > Secrets
  3. Ajoutez un nouveau secret :
    • Name: FIREBASE_SERVICE_ACCOUNT
    • Value: Collez tout le contenu du fichier JSON (sur une seule ligne)

Vérifier le secret

supabase secrets list

# Vous devriez voir :
# - STRIPE_API_KEY
# - STRIPE_WEBHOOK_SECRET
# - SUPABASE_URL
# - SUPABASE_SERVICE_ROLE_KEY
# - FIREBASE_SERVICE_ACCOUNT (nouveau)

🚀 Étape 3 : Déployer le webhook

# Déployer la fonction webhook mise à jour
supabase functions deploy stripe-webhook

# Vérifier les logs
supabase functions logs stripe-webhook --follow

✅ Étape 4 : Test

1. Vérifier que l'API FCM v1 est activée

  1. Allez sur Google Cloud Console
  2. Sélectionnez votre projet Firebase
  3. APIs & Services > Enabled APIs & services
  4. Vérifiez que Firebase Cloud Messaging API est activée
  5. Si ce n'est pas le cas, activez-la

2. Effectuer un paiement test

  1. Lancez l'application
  2. Créez une commande
  3. Passez au statut "Payée"
  4. Créez un lien de paiement
  5. Utilisez la carte de test : 4242 4242 4242 4242

3. Vérifier les logs

supabase functions logs stripe-webhook

# Vous devriez voir :
✅ Commande updated successfully: [id]
✅ Notification sent successfully for token: fXxxx...

🔧 Dépannage

Erreur : "FIREBASE_SERVICE_ACCOUNT not configured"

Cause : Le secret n'est pas configuré ou mal formaté

Solution :

# Vérifier que le secret existe
supabase secrets list | grep FIREBASE_SERVICE_ACCOUNT

# Reconfigurer si nécessaire (contenu JSON sur une seule ligne)
supabase secrets set FIREBASE_SERVICE_ACCOUNT='{"type":"service_account",...}'

Erreur : "Failed to get access token"

Cause : Problème avec la clé privée ou les permissions

Solution :

  1. Vérifiez que le fichier JSON est complet et valide
  2. Vérifiez que l'API Firebase Cloud Messaging est activée
  3. Vérifiez les permissions du service account :
    • Allez dans Google Cloud Console
    • IAM & Admin > Service Accounts
    • Le service account doit avoir le rôle "Firebase Cloud Messaging Admin"

Erreur : "Invalid token"

Cause : Le token FCM est expiré ou invalide

Solution :

  1. Déconnectez-vous de l'app
  2. Reconnectez-vous (cela génère un nouveau token)
  3. Réessayez

📊 Monitoring

Logs en temps réel

# Voir tous les logs
supabase functions logs stripe-webhook --follow

# Filtrer les notifications
supabase functions logs stripe-webhook | grep "Notification"

Dashboard Firebase

  1. Allez dans Firebase Console
  2. Engagement > Cloud Messaging
  3. Consultez les statistiques d'envoi

🎯 Différences API V1 vs Legacy

FonctionnalitéLegacy APIAPI V1
AuthentificationServer KeyOAuth2 Access Token
URL/fcm/send/v1/projects/{project}/messages:send
Format payloadto, notificationmessage.token, message.notification
SécuritéClé statiqueToken temporaire (1h)
SupportDéprécié en 2024Recommandé

✨ Avantages de l'API V1

  • ✅ Plus sécurisée (tokens temporaires)
  • ✅ Meilleure gestion des erreurs
  • ✅ Support à long terme
  • ✅ Fonctionnalités avancées (badges, sons personnalisés)

📝 Checklist

  • Projet Firebase créé
  • API Firebase Cloud Messaging activée
  • Fichier JSON du service account téléchargé
  • Secret FIREBASE_SERVICE_ACCOUNT configuré dans Supabase
  • Webhook redéployé
  • Test de paiement réussi
  • Notification reçue sur l'app

📚 Ressources