API Hello Analytics: краткое руководство по Java для сервисных учетных записей

В этом руководстве описаны шаги, необходимые для доступа к учетной записи Google Analytics, запроса API-интерфейсов Analytics, обработки ответов API и вывода результатов. В этом руководстве используются Core Reporting API v3.0 , Management API v3.0 и OAuth2.0 .

Шаг 1. Включите Analytics API

Чтобы начать использовать Google Analytics API, вам необходимо сначала использовать инструмент настройки , который поможет вам создать проект в консоли Google API, включить API и создать учетные данные.

Создайте идентификатор клиента

  1. Откройте страницу учетных записей службы . При появлении запроса выберите проект.
  2. Нажмите учетную запись службы» , введите имя и описание учетной записи службы. Вы можете использовать идентификатор учетной записи службы по умолчанию или выбрать другой, уникальный. Когда закончите, нажмите «Создать» .
  3. Следующий раздел «Разрешения учетной записи службы (необязательно)» не является обязательным. Нажмите Продолжить .
  4. На экране «Предоставить пользователям доступ к этой учетной записи службы» прокрутите вниз до раздела «Создать ключ» . Нажмите Создать ключ» .
  5. На появившейся боковой панели выберите формат вашего ключа: рекомендуется JSON .
  6. Нажмите Создать . Ваша новая пара открытого/закрытого ключей генерируется и загружается на ваш компьютер; он служит единственной копией этого ключа. Информацию о том, как безопасно хранить данные, см. в разделе Управление ключами сервисных учетных записей .
  7. Нажмите «Закрыть» в диалоговом окне «Закрытый ключ, сохраненный на вашем компьютере» , затем нажмите « Готово», чтобы вернуться к таблице ваших учетных записей служб.

Добавить сервисный аккаунт в аккаунт Google Analytics

Вновь созданная учетная запись службы будет иметь адрес электронной почты <projectId>-<uniqueId>@developer.gserviceaccount.com ; Используйте этот адрес электронной почты, чтобы добавить пользователя в учетную запись Google Analytics, к которой вы хотите получить доступ через API. Для этого руководства необходимы только разрешения на чтение и анализ .

Шаг 2. Установите клиентскую библиотеку Google

Чтобы установить Java-клиент Google Analytics API, необходимо загрузить zip-файл, содержащий все файлы jar, которые необходимо извлечь и скопировать в путь к классам Java.

  1. Загрузите клиентскую библиотеку Google Analytics Java , которая поставляется в виде ZIP-файла со всеми необходимыми зависимостями.
  2. Извлеките ZIP-файл
  3. Добавьте все JAR-файлы из каталога libs в свой путь к классам.
  4. Добавьте jar google-api-services-analytics-v3-[version].jar в свой путь к классам.

Шаг 3. Настройте образец

Вам нужно будет создать один файл с именем HelloAnalytics.java , который будет содержать данный пример кода.

  1. Скопируйте или загрузите следующий исходный код в HelloAnalytics.java .
  2. Переместите ранее загруженный client_secrets.JSON в тот же каталог, что и пример кода.
  3. Замените значения KEY_FILE_LOCATION соответствующими значениями из консоли разработчика.
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");
    }
  }
}

Шаг 4. Запустите образец

После того как вы включили Analytics API, установили клиентскую библиотеку Google API для Java и настроили пример исходного кода, образец готов к запуску.

Если вы используете IDE, убедитесь, что в качестве цели запуска по умолчанию установлен класс HelloAnalytics . В противном случае вы можете скомпилировать и запустить приложение из командной строки:

  1. Скомпилируйте образец, используя:
    javac -classpath /path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics.java
  2. Запустите образец, используя:
    java -classpath ./:/path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics

Когда вы выполните эти шаги, в образце выводится имя первого представления (профиля) Google Analytics авторизованного пользователя и количество сеансов за последние семь дней.

С помощью авторизованного объекта службы Analytics теперь можно запускать любые примеры кода, приведенные в справочной документации по Management API . Например, вы можете попробовать изменить код, чтобы использовать метод accountSummaries.list .