API Hello Analytics: guide de démarrage rapide Java pour les comptes de service

Ce tutoriel décrit les étapes à suivre pour accéder à un compte Google Analytics, interroger les API Analytics, gérer les réponses de l'API et générer les résultats. Ce tutoriel utilise les versions 3.0 de l'API Core Reporting, API Management v3.0 et OAuth2.0.

Étape 1: Activer l'API Analytics

Pour commencer à utiliser l'API Google Analytics, vous devez d'abord utiliser l'outil de configuration, qui vous guide tout au long de la création d'un projet dans la console Google APIs, de l'activation de l'API et de la création d'identifiants.

Créer un ID client

  1. Ouvrez la page Comptes de service. Si vous y êtes invité, sélectionnez un projet.
  2. Cliquez sur Créer un compte de service, puis saisissez un nom et une description pour ce compte. Vous pouvez utiliser l'ID de compte de service par défaut ou en choisir un autre, unique. Une fois que vous avez terminé, cliquez sur Créer.
  3. La section Autorisations associées au compte de service (facultatif) qui suit n'est pas requise. Cliquez sur Continuer.
  4. Sur l'écran Autoriser les utilisateurs à accéder à ce compte de service, accédez à la section Créer une clé. Cliquez sur Créer une clé.
  5. Dans le panneau latéral qui s'affiche, sélectionnez le format de votre clé. JSON est recommandé.
  6. Cliquez sur Créer. La nouvelle paire de clés publique et privée est générée et téléchargée sur votre ordinateur. Il s'agit de la seule copie dont vous disposez. Découvrez comment stocker cette clé en toute sécurité.
  7. Cliquez sur Fermer dans la boîte de dialogue Clé privée enregistrée sur votre ordinateur, puis cliquez sur OK pour afficher le tableau des comptes de service.

Ajouter un compte de service au compte Google Analytics

Le compte de service nouvellement créé disposera d'une adresse e-mail, <projectId>-<uniqueId>@developer.gserviceaccount.com. Utilisez cette adresse e-mail pour ajouter un utilisateur au compte Google Analytics auquel vous souhaitez accéder via l'API. Pour ce tutoriel, seules les autorisations Lire et analyser sont nécessaires.

Étape 2: Installez la bibliothèque cliente Google

Pour installer le client Java de l'API Google Analytics, vous devez télécharger un fichier ZIP contenant tous les fichiers JAR que vous devez extraire et copier dans votre classpath Java.

  1. Téléchargez la bibliothèque cliente Java de Google Analytics, fournie sous forme de fichier ZIP avec toutes les dépendances requises.
  2. Extrayez le fichier ZIP.
  3. Ajoutez tous les fichiers JAR du répertoire libs à votre classpath.
  4. Ajoutez le fichier JAR google-api-services-analytics-v3-[version].jar au chemin de classe.

Étape 3: Configurer l'exemple

Vous devez créer un fichier unique nommé HelloAnalytics.java, qui contiendra l'exemple de code donné.

  1. Copiez ou téléchargez le code source suivant dans HelloAnalytics.java.
  2. Déplacez le fichier client_secrets.JSON précédemment téléchargé dans le même répertoire que l'exemple de code.
  3. Remplacez les valeurs de KEY_FILE_LOCATION par les valeurs appropriées de la Play Console.
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;

import com.google.api.services.analytics.Analytics;
import com.google.api.services.analytics.AnalyticsScopes;
import com.google.api.services.analytics.model.Accounts;
import com.google.api.services.analytics.model.GaData;
import com.google.api.services.analytics.model.Profiles;
import com.google.api.services.analytics.model.Webproperties;

import java.io.FileInputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.io.IOException;


/**
 * A simple example of how to access the Google Analytics API using a service
 * account.
 */
public class HelloAnalytics {


  private static final String APPLICATION_NAME = "Hello Analytics";
  private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
  private static final String KEY_FILE_LOCATION = "<REPLACE_WITH_JSON_FILE>";
  public static void main(String[] args) {
    try {
      Analytics analytics = initializeAnalytics();

      String profile = getFirstProfileId(analytics);
      System.out.println("First Profile Id: "+ profile);
      printResults(getResults(analytics, profile));
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  /**
   * Initializes an Analytics service object.
   *
   * @return An authorized Analytics service object.
   * @throws IOException
   * @throws GeneralSecurityException
   */
  private static AnalyticsReporting initializeAnalytic() throws GeneralSecurityException, IOException {

    HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
    GoogleCredential credential = GoogleCredential
        .fromStream(new FileInputStream(KEY_FILE_LOCATION))
        .createScoped(AnalyticsScopes.all());

    // Construct the Analytics service object.
    return new Analytics.Builder(httpTransport, JSON_FACTORY, credential)
        .setApplicationName(APPLICATION_NAME).build();
  }


  private static String getFirstProfileId(Analytics analytics) throws IOException {
    // Get the first view (profile) ID for the authorized user.
    String profileId = null;

    // Query for the list of all accounts associated with the service account.
    Accounts accounts = analytics.management().accounts().list().execute();

    if (accounts.getItems().isEmpty()) {
      System.err.println("No accounts found");
    } else {
      String firstAccountId = accounts.getItems().get(0).getId();

      // Query for the list of properties associated with the first account.
      Webproperties properties = analytics.management().webproperties()
          .list(firstAccountId).execute();

      if (properties.getItems().isEmpty()) {
        System.err.println("No Webproperties found");
      } else {
        String firstWebpropertyId = properties.getItems().get(0).getId();

        // Query for the list views (profiles) associated with the property.
        Profiles profiles = analytics.management().profiles()
            .list(firstAccountId, firstWebpropertyId).execute();

        if (profiles.getItems().isEmpty()) {
          System.err.println("No views (profiles) found");
        } else {
          // Return the first (view) profile associated with the property.
          profileId = profiles.getItems().get(0).getId();
        }
      }
    }
    return profileId;
  }

  private static GaData getResults(Analytics analytics, String profileId) throws IOException {
    // Query the Core Reporting API for the number of sessions
    // in the past seven days.
    return analytics.data().ga()
        .get("ga:" + profileId, "7daysAgo", "today", "ga:sessions")
        .execute();
  }

  private static void printResults(GaData results) {
    // Parse the response from the Core Reporting API for
    // the profile name and number of sessions.
    if (results != null && !results.getRows().isEmpty()) {
      System.out.println("View (Profile) Name: "
        + results.getProfileInfo().getProfileName());
      System.out.println("Total Sessions: " + results.getRows().get(0).get(0));
    } else {
      System.out.println("No results found");
    }
  }
}

Étape 4: Exécutez l'exemple

Une fois que vous avez activé l'API Analytics, installé la bibliothèque cliente des API Google pour Java et configuré l'exemple de code source, celui-ci est prêt à être exécuté.

Si vous utilisez un IDE, assurez-vous qu'une cible d'exécution par défaut est définie sur la classe HelloAnalytics. Sinon, vous pouvez compiler et exécuter l'application à partir de la ligne de commande:

  1. Compilez l'exemple à l'aide de la commande suivante :
    javac -classpath /path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics.java
  2. Exécutez l'exemple à l'aide de la commande suivante :
    java -classpath ./:/path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics

Une fois ces étapes terminées, l'exemple génère le nom de la première vue Google Analytics (profil) de l'utilisateur autorisé, ainsi que le nombre de sessions au cours des sept derniers jours.

Avec l'objet de service Analytics autorisé, vous pouvez désormais exécuter n'importe quel exemple de code disponible dans la documentation de référence de l'API Management. Par exemple, vous pouvez essayer de modifier le code pour utiliser la méthode accountSummaries.list.