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é)
- Allez sur Firebase Console
- Sélectionnez votre projet
- Cliquez sur l'icône ⚙️ > Paramètres du projet
- Allez dans l'onglet Comptes de service
- Cliquez sur Générer une nouvelle clé privée
- 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
- Allez dans votre projet Supabase
- Settings > Edge Functions > Secrets
- Ajoutez un nouveau secret :
- Name:
FIREBASE_SERVICE_ACCOUNT - Value: Collez tout le contenu du fichier JSON (sur une seule ligne)
- Name:
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
- Allez sur Google Cloud Console
- Sélectionnez votre projet Firebase
- APIs & Services > Enabled APIs & services
- Vérifiez que Firebase Cloud Messaging API est activée
- Si ce n'est pas le cas, activez-la
2. Effectuer un paiement test
- Lancez l'application
- Créez une commande
- Passez au statut "Payée"
- Créez un lien de paiement
- 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 :
- Vérifiez que le fichier JSON est complet et valide
- Vérifiez que l'API Firebase Cloud Messaging est activée
- 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 :
- Déconnectez-vous de l'app
- Reconnectez-vous (cela génère un nouveau token)
- 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
- Allez dans Firebase Console
- Engagement > Cloud Messaging
- Consultez les statistiques d'envoi
🎯 Différences API V1 vs Legacy
| Fonctionnalité | Legacy API | API V1 |
|---|---|---|
| Authentification | Server Key | OAuth2 Access Token |
| URL | /fcm/send | /v1/projects/{project}/messages:send |
| Format payload | to, notification | message.token, message.notification |
| Sécurité | Clé statique | Token temporaire (1h) |
| Support | Déprécié en 2024 | Recommandé |
✨ 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_ACCOUNTconfiguré dans Supabase - Webhook redéployé
- Test de paiement réussi
- Notification reçue sur l'app