Connecter Firebase Crashlytics

Mis à jour le

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

  1. Ouvre la console Firebase → sélectionne le projet.
  2. Menu latéral → Crashlytics → onglet Integrations.
  3. Clique Link à côté de BigQuery.
  4. Coche les apps (Android + iOS) à exporter. Confirme.
  5. Firebase crée un dataset firebase_crashlytics dans ton projet GCP, avec une table par app/plateforme :
    • firebase_crashlytics.com_example_app_ANDROID
    • firebase_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

  1. Console GCP → IAM & Admin → Service Accounts → Create service account.
  2. Nom : stathall-crashlytics-reader. Description : “Lecture read-only des data Crashlytics pour StatHall”.
  3. 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)
  4. Clique Done (pas besoin de User role access).

Étape 3 — Télécharger la clé JSON

  1. Ouvre le service account créé → onglet Keys → Add key → Create new key.
  2. Format JSON → Create. Le fichier stathall-crashlytics-reader-XXXXX.json est téléchargé.
  3. 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 :

  1. 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>.
  2. Service account JSON : bouton Choisir un fichier → sélectionne le .json téléchargé à l’étape 3.
  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.
  4. 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.