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é-requisDétail
Rôle Play ConsoleAdmin (ou Developer avec View app information + Reply to reviews)
Projet GCPLié au compte Play Console (Setup → API access)
Service AccountCréé 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 :

  1. Sélectionnez le projet GCP lié au compte Play Console (ou créez-en un nouveau).
  2. Ouvrez IAM & Admin → Service Accounts → Create Service Account.
  3. Nom : statsapps-readonly (ID auto-généré).
  4. Sautez la section Grant roles — l’autorisation passe par l’invitation Play Console (étape 3).
  5. Une fois créé, ouvrez le SA → Keys → Add Key → Create new key → JSON.
  6. 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.

  1. Ouvrez Play Console → Users and permissions.
  2. Invite new users → collez le client_email du JSON (forme : …@<project-id>.iam.gserviceaccount.com).
  3. Pour l’app concernée, accordez au minimum :
    • View app information and download bulk reports
    • View app statistics
  4. 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 :

ChampValeur
Service account JSONfichier téléchargé en étape 1
Package namedé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 installsMetricSet cô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 avec provider="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

ErreurCause probableAction
403 SERVICE_DISABLEDUne des deux APIs n’est pas activéeRetour à l’étape 2
403 projectNotLinkedProjet GCP pas lié à Play ConsolePlay Console → Setup → API access → Link project
401 / 403 côté ReviewsSA non invité côté Play ConsoleÉtape 3 — l’IAM GCP ne suffit pas
Play Reporting API 403Reporting API désactivée ou rôle manquantGCP → activer l’API + accorder playdeveloperreporting.metrics.read
Backfill avis videPackage indisponible dans les marchés scrapés ou 429Réessayer plus tard ; vérifier la disponibilité publique de l’app
Rate limit (100 req/min)Trop d’appels en parallèleStatHall planifie à 30 min de cadence par défaut, largement sous la limite