Hello Analytics API: Java-Kurzanleitung für installierte Anwendungen

In dieser Anleitung werden die Schritte beschrieben, die für den Zugriff auf ein Google Analytics-Konto, die Abfrage der Analytics APIs, die Verarbeitung der API-Antworten und die Ausgabe der Ergebnisse erforderlich sind. In dieser Anleitung werden die Core Reporting API Version 3.0, die Management API Version 3.0 und OAuth 2.0 verwendet.

Schritt 1: Analytics API aktivieren

Damit du die Google Analytics API verwenden kannst, musst du zuerst mithilfe des Einrichtungstools ein Projekt in der Google API Console erstellen. Dadurch wird die API aktiviert und Anmeldedaten erzeugt.

Client-ID erstellen

Auf der Seite „Anmeldedaten“:

  1. Klicken Sie auf Anmeldedaten erstellen und wählen Sie OAuth-Client-ID aus.
  2. Wählen Sie unter Anwendungstyp die Option Sonstiges aus.
  3. Benennen Sie die Anmeldedaten.
  4. Klicken Sie auf Erstellen.

Wählen Sie die soeben erstellten Anmeldedaten aus und klicken Sie auf JSON herunterladen. Speichern Sie die heruntergeladene Datei als client_secrets.json. Sie benötigen sie später in der Anleitung.

Schritt 2: Google-Clientbibliothek installieren

Um den Google Analytics API-Java-Client zu installieren, müssen Sie eine ZIP-Datei mit allen JAR-Dateien herunterladen, die Sie extrahieren und in Ihren Java-Klassenpfad kopieren müssen.

  1. Laden Sie die Google Analytics Java-Clientbibliothek herunter. Diese ist als ZIP-Datei mit allen erforderlichen Abhängigkeiten gebündelt.
  2. Extrahieren Sie die ZIP-Datei.
  3. Fügen Sie Ihrem Klassenpfad alle JARs im Verzeichnis libs hinzu.
  4. Fügen Sie Ihrem Klassenpfad die JAR-Datei google-api-services-analytics-v3-[version].jar hinzu.

Schritt 3: Beispiel einrichten

Sie müssen eine einzelne Datei namens HelloAnalytics.java erstellen, die den angegebenen Beispielcode enthält.

  1. Kopieren Sie den folgenden Quellcode oder laden Sie ihn herunter zu HelloAnalytics.java.
  2. Verschieben Sie die zuvor heruntergeladene Datei client_secrets.json in dasselbe Verzeichnis wie den Beispielcode.
import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.client.util.store.FileDataStoreFactory;
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.File;
import java.io.IOException;
import java.io.InputStreamReader;


/**
 * A simple example of how to access the Google Analytics API.
 */
public class HelloAnalytics {
  // Path to client_secrets.json file downloaded from the Developer's Console.
  // The path is relative to HelloAnalytics.java.
  private static final String CLIENT_SECRET_JSON_RESOURCE = "client_secrets.json";

  // The directory where the user's credentials will be stored.
  private static final File DATA_STORE_DIR = new File(
      System.getProperty("user.home"), ".store/hello_analytics");

  private static final String APPLICATION_NAME = "Hello Analytics";
  private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
  private static NetHttpTransport httpTransport;
  private static FileDataStoreFactory dataStoreFactory;

  public static void main(String[] args) {
    try {
      Analytics analytics = initializeAnalytics();
      String profile = getFirstProfileId(analytics);
      printResults(getResults(analytics, profile));
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  private static Analytics initializeAnalytics() throws Exception {

    httpTransport = GoogleNetHttpTransport.newTrustedTransport();
    dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);

    // Load client secrets.
    GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
        new InputStreamReader(HelloAnalytics.class
            .getResourceAsStream(CLIENT_SECRET_JSON_RESOURCE)));

    // Set up authorization code flow for all auth scopes.
    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow
        .Builder(httpTransport, JSON_FACTORY, clientSecrets,
        AnalyticsScopes.all()).setDataStoreFactory(dataStoreFactory)
        .build();

    // Authorize.
    Credential credential = new AuthorizationCodeInstalledApp(flow,
        new LocalServerReceiver()).authorize("user");

    // 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 properties 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");
    }
  }
}

Schritt 4: Beispiel ausführen

Nachdem Sie die Analytics API aktiviert haben, haben Sie die Google API-Clientbibliothek für Java installiert und den Quellcode der Stichprobe eingerichtet.

Wenn Sie eine IDE verwenden, muss als Standardausführungsziel HelloAnalytics festgelegt sein.

  1. Die Autorisierungsseite wird in der Anwendung in einem Browser geladen.
  2. Wenn Sie noch nicht in Ihrem Google-Konto angemeldet sind, werden Sie aufgefordert, sich anzumelden. Wenn Sie in mehreren Google-Konten angemeldet sind, werden Sie aufgefordert, ein Konto für die Autorisierung auszuwählen.

Wenn Sie diese Schritte ausführen, gibt das Beispiel den Namen der ersten Google Analytics-Datenansicht (Profil) und die Anzahl der Sitzungen in den letzten sieben Tagen aus.

Mit dem autorisierten Analytics-Dienstobjekt können Sie jetzt alle Codebeispiele in der Referenzdokumentation zur Management API ausführen. Sie können beispielsweise versuchen, den Code so zu ändern, dass die Methode accountSummaries.list verwendet wird.