Connecter Google Play
StatHall lit en lecture seule les avis Android, les statistiques d’installation / crash et, depuis la rc.5, les clusters d’erreurs Play Vitals (errorIssues) via la Play Developer Reporting API. L’historique des avis est complété en best-effort depuis la fiche publique du Play Store (scraper).
Aucune écriture vers Play Console. Aucune réponse aux reviews. Le Service Account sert uniquement aux endpoints en lecture.
Avant de commencer
| Pré-requis | Détail |
|---|---|
| Rôle Play Console | Admin (ou Developer avec View app information + Reply to reviews) |
| Projet GCP | Lié au compte Play Console (Setup → API access) |
| Service Account | Créé dans GCP, invité explicitement dans Play Console |
Rôles IAM minimaux du Service Account :
roles/androidpublisher.reader— Google Play Android Developer + Reporting API.
Plus aucun bucket Cloud Storage à configurer depuis V3.S22 : le backfill historique passe par la Reporting API (installs) et un scraper public (avis).
Étape 1 — Créer le Service Account
Dans Google Cloud Console :
- Sélectionnez le projet GCP lié au compte Play Console (ou créez-en un nouveau).
- Ouvrez IAM & Admin → Service Accounts → Create Service Account.
- Nom :
statsapps-readonly(ID auto-généré). - Sautez la section Grant roles — l’autorisation passe par l’invitation Play Console (étape 3).
- Une fois créé, ouvrez le SA → Keys → Add Key → Create new key → JSON.
- Téléchargez le fichier JSON et stockez-le en lieu sûr.
⚠️ Le JSON n’est téléchargeable qu’une seule fois.
Étape 2 — Activer les APIs
Toujours dans GCP : APIs & Services → Library, activez :
- Google Play Android Developer API
- Google Play Developer Reporting API
Étape 3 — Inviter le Service Account dans Play Console
Play Console n’utilise pas IAM. L’invitation côté Play est une étape manuelle distincte des rôles IAM.
- Ouvrez Play Console → Users and permissions.
- Invite new users → collez le
client_emaildu JSON (forme :…@<project-id>.iam.gserviceaccount.com). - Pour l’app concernée, accordez au minimum :
- View app information and download bulk reports
- View app statistics
- Save. StatHall détecte l’accès dès la prochaine sync.
Étape 4 — Saisir dans StatHall
Dans l’app, ouvrez Sources → Google et renseignez :
| Champ | Valeur |
|---|---|
| Service account JSON | fichier téléchargé en étape 1 |
| Package name | déjà renseigné côté onglet Général (ex : com.acme.myapp) |
| Identifiant développeur Play (optionnel, rc.5) | numérique trouvé dans l’URL Play Console : developers/<ID>/app/… |
Cliquez sur Tester la connexion, puis Enregistrer.
L’identifiant développeur Play sert uniquement à construire le lien « Ouvrir dans Play Console » sur les crash issues. Sans, l’icône externe est masquée — la sync continue normalement.
Backfill historique
Depuis l’onglet Synchronisation de l’app :
- Avis : la backfill scrape les avis publics du Play Store sur cinq marchés (FR, US, DE, ES, IT) pour récupérer ce que la Developer API ne renvoie plus passé 7 jours. Volume bridé par ce que la fiche publique expose (typiquement quelques milliers d’avis récents).
- Installs : la backfill interroge
installsMetricSetcôté Play Developer Reporting API (~365 jours d’historique disponibles). Pas d’historique antérieur. - Crash issues Play Vitals (rc.5) : sync quotidien automatique à 04:15 UTC (
errorIssues:search). Chaque cluster apparaît dans l’onglet Crashs avecprovider="play_vitals"; quand la même issue est aussi remontée par Crashlytics, StatHall la fusionne automatiquement et expose les deux deep-links.
Le scraping des avis est un mécanisme best-effort — Google peut le couper sans préavis. Le sync nominal (Developer API, 7 jours) reste l’unique source garantie.
Dépannage
| Erreur | Cause probable | Action |
|---|---|---|
403 SERVICE_DISABLED | Une des deux APIs n’est pas activée | Retour à l’étape 2 |
403 projectNotLinked | Projet GCP pas lié à Play Console | Play Console → Setup → API access → Link project |
401 / 403 côté Reviews | SA non invité côté Play Console | Étape 3 — l’IAM GCP ne suffit pas |
Play Reporting API 403 | Reporting API désactivée ou rôle manquant | GCP → activer l’API + accorder playdeveloperreporting.metrics.read |
| Backfill avis vide | Package indisponible dans les marchés scrapés ou 429 | Réessayer plus tard ; vérifier la disponibilité publique de l’app |
| Rate limit (100 req/min) | Trop d’appels en parallèle | StatHall planifie à 30 min de cadence par défaut, largement sous la limite |