Connecter Firebase Crashlytics
StatHall lit en lecture seule les issues de crashs d’un projet Firebase Crashlytics via l’export BigQuery. L’authentification se fait par service account JSON (GCP) avec des rôles BigQuery read-only — pas de login/mot de passe.
Aucune écriture côté Firebase. Aucune notification sortante. Le service account sert uniquement à requêter BigQuery en lecture.
Avant de commencer
| Pré-requis | Détail |
|---|---|
| Projet Firebase | Crashlytics activé sur au moins une app (Android et/ou iOS) |
| Projet GCP | Même projet que Firebase (ou projet “jumeau” configuré côté Firebase) |
| Rôle minimum | roles/bigquery.dataViewer + roles/bigquery.jobUser + roles/firebase.viewer |
| Infos à récupérer | Project ID Firebase + fichier JSON du service account |
Étape 1 — Activer l’export BigQuery côté Firebase
- Ouvre la console Firebase → sélectionne le projet.
- Menu latéral → Crashlytics → onglet Integrations.
- Clique Link à côté de BigQuery.
- Coche les apps (Android + iOS) à exporter. Confirme.
- Firebase crée un dataset
firebase_crashlyticsdans ton projet GCP, avec une table par app/plateforme :firebase_crashlytics.com_example_app_ANDROIDfirebase_crashlytics.com_example_app_IOS
⏱️ Délai d’export : les premières rows apparaissent ~10 min après activation, puis en streaming continu.
💸 Coût : l’export BigQuery est gratuit (Firebase prend en charge le coût d’ingestion). Seules les requêtes StatHall sur BQ sont facturées — quelques cents/mois en pratique.
Étape 2 — Créer un service account GCP
- Console GCP → IAM & Admin → Service Accounts → Create service account.
- Nom :
stathall-crashlytics-reader. Description : “Lecture read-only des data Crashlytics pour StatHall”. - Grant this service account access : ajoute ces 3 rôles :
BigQuery Data Viewer(roles/bigquery.dataViewer)BigQuery Job User(roles/bigquery.jobUser)Firebase Viewer(roles/firebase.viewer)
- Clique Done (pas besoin de
User role access).
Étape 3 — Télécharger la clé JSON
- Ouvre le service account créé → onglet Keys → Add key → Create new key.
- Format JSON → Create. Le fichier
stathall-crashlytics-reader-XXXXX.jsonest téléchargé. - Conserve-le en sécurité — StatHall le chiffre en base (Fernet) dès que tu l’enregistres ; tu ne pourras pas le re-télécharger.
Étape 4 — Saisir dans StatHall
Dans l’onglet Sources de la config d’une app :
- Project ID Firebase : le project id (pas le number). Visible en haut de la console Firebase ou dans l’URL
https://console.firebase.google.com/project/<ton-project-id>. - Service account JSON : bouton Choisir un fichier → sélectionne le
.jsontéléchargé à l’étape 3. - Clique Tester la connexion. StatHall fait un
GET https://firebase.googleapis.com/v1beta1/projects/<ton-project-id>avec le JWT signé par le SA pour valider l’accès. - Enregistrer.
Le sync automatique démarre dans les 15 min (cadence sync-firebase-crashes : */15 min).
Vérification
Après 15-30 min, vérifie :
| Où | Quoi |
|---|---|
| StatHall → Crashs | Les issues Crashlytics apparaissent avec un badge firebase |
| StatHall → Sources → Firebase Crashlytics | Dernier test : OK |
| Beat logs | sync-firebase-crashes exécuté sans erreur |
Dépannage
| Symptôme | Cause probable | Fix |
|---|---|---|
403 — le service account n'a pas accès | Rôles manquants | Ajoute roles/bigquery.dataViewer + roles/bigquery.jobUser + roles/firebase.viewer |
404 — projet introuvable | Mauvais project ID (number au lieu du slug) | Récupère le slug depuis la console Firebase, pas le numéro |
| Aucune issue ingérée après 30 min | BQ export pas encore activé ou pas de crashs récents | Vérifie l’étape 1 — la carte BigQuery doit afficher “Linked” |
Access Denied: BigQuery BigQuery: Permission denied on resource project | Le SA vient d’un autre projet GCP | Crée le SA dans le MÊME projet que Firebase |
Sécurité
Le fichier JSON du service account contient une clé privée RSA : traite-le comme un secret. StatHall le chiffre en base (Fernet) dès l’enregistrement ; l’export /account/export RGPD ne le renvoie jamais en clair. Pour révoquer, supprime la clé depuis la console GCP → IAM → Service Accounts → Keys.