Hello Analytics API: krótkie wprowadzenie do Javy dla kont usługi

W tym samouczku omawiamy, jak uzyskać dostęp do konta Google Analytics, wysyłać zapytania do interfejsów API Analytics, obsługiwać odpowiedzi interfejsu API i wyświetlać wyniki. W tym samouczku używane są interfejsy Core Reporting API w wersji 3.0, Management API w wersji 3.0 i OAuth2.0.

Krok 1. Włącz Analytics API

Aby rozpocząć korzystanie z interfejsu Google Analytics API, musisz najpierw użyć narzędzia do konfiguracji, które przeprowadzi Cię przez proces tworzenia projektu w Konsoli interfejsów API Google, włączania interfejsu API i tworzenia danych logowania.

Utwórz identyfikator klienta

  1. Otwórz stronę Konta usługi. Jeśli pojawi się monit, wybierz projekt.
  2. Kliknij Utwórz konto usługi, a potem wpisz jego nazwę i opis. Możesz użyć domyślnego identyfikatora konta usługi lub wybrać inny, unikalny identyfikator. Gdy już to zrobisz, kliknij Utwórz.
  3. Określenie opcji w kolejnej sekcji Uprawnienia konta usługi (opcjonalnie) nie jest wymagane. Kliknij Dalej.
  4. Na ekranie Przyznaj użytkownikom dostęp do tego konta usługi przewiń w dół do sekcji Utwórz klucz. Kliknij Utwórz klucz.
  5. W wyświetlonym panelu bocznym wybierz format klucza. Zalecamy JSON.
  6. Kliknij Utwórz. Nowa para kluczy publicznych/prywatnych zostanie wygenerowana i pobrana na Twoje urządzenie. To jedyny egzemplarz tego klucza. Informacje o tym, jak bezpiecznie go przechowywać, znajdziesz w opisie zarządzania kluczami konta usługi.
  7. W oknie Na komputerze zapisano klucz prywatny kliknij Zamknij, a potem kliknij Gotowe, aby powrócić do tabeli z kontami usług.

Dodaj konto usługi do konta Google Analytics

Nowo utworzone konto usługi będzie miało adres e-mail <projectId>-<uniqueId>@developer.gserviceaccount.com. Użyj go, aby dodać użytkownika do konta Google Analytics, do którego chcesz uzyskać dostęp za pomocą interfejsu API. W tym samouczku potrzebne są tylko uprawnienia do odczytu i analizy.

Krok 2. Zainstaluj bibliotekę klienta Google

Aby zainstalować klienta Java interfejsu Google Analytics API, musisz pobrać plik ZIP zawierający wszystkie pliki jar, które musisz wyodrębnić i skopiować do ścieżki klasy Java.

  1. Pobierz bibliotekę klienta Google Analytics w języku Java, która jest dołączona jako plik ZIP ze wszystkimi wymaganymi zależnościami.
  2. Wyodrębnij plik ZIP
  3. Dodaj do ścieżki klasy wszystkie pliki JAR z katalogu libs.
  4. Dodaj do ścieżki klasy plik jar google-api-services-analytics-v3-[version].jar.

Krok 3. Skonfiguruj przykład

Musisz utworzyć jeden plik o nazwie HelloAnalytics.java, który będzie zawierał podany przykładowy kod.

  1. Skopiuj lub pobierz ten kod źródłowy do HelloAnalytics.java.
  2. Przenieś pobrany wcześniej plik client_secrets.JSON do tego samego katalogu, w którym znajduje się przykładowy kod.
  3. Zastąp wartości parametru KEY_FILE_LOCATION odpowiednimi wartościami z Konsoli Play.
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");
    }
  }
}

Krok 4. Uruchom próbkę

Gdy włączysz interfejs Analytics API, zainstalujesz bibliotekę klienta interfejsów API Google dla Javy i skonfigurujesz przykładowy kod źródłowy, który będzie gotowy do uruchomienia.

Jeśli używasz IDE, sprawdź, czy Twój domyślny cel uruchamiania jest ustawiony na klasę HelloAnalytics. W przeciwnym razie możesz skompilować i uruchomić aplikację z poziomu wiersza poleceń:

  1. Skompiluj próbkę za pomocą:
    javac -classpath /path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics.java
  2. Uruchom przykład za pomocą:
    java -classpath ./:/path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics

Gdy wykonasz te czynności, w przykładzie zostanie wyświetlona nazwa pierwszego widoku Google Analytics (profilu) autoryzowanego użytkownika oraz liczba sesji w ciągu ostatnich 7 dni.

Za pomocą autoryzowanego obiektu usługi Analytics możesz teraz uruchamiać dowolny z przykładów kodu, który znajdziesz w dokumentacji interfejsu Management API. Możesz na przykład zmienić kod i użyć metody accountSummaries.list.