В этом руководстве описаны шаги, необходимые для доступа к учетной записи 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 и создать учетные данные.
Создайте идентификатор клиента
- Откройте страницу учетных записей службы . При появлении запроса выберите проект.
- Нажмите учетную запись службы» , введите имя и описание учетной записи службы. Вы можете использовать идентификатор учетной записи службы по умолчанию или выбрать другой, уникальный. Когда закончите, нажмите «Создать» .
- Следующий раздел «Разрешения учетной записи службы (необязательно)» не является обязательным. Нажмите Продолжить .
- На экране «Предоставить пользователям доступ к этой учетной записи службы» прокрутите вниз до раздела «Создать ключ» . Нажмите Создать ключ» .
- На появившейся боковой панели выберите формат вашего ключа: рекомендуется JSON .
- Нажмите Создать . Ваша новая пара открытого/закрытого ключей генерируется и загружается на ваш компьютер; он служит единственной копией этого ключа. Информацию о том, как безопасно хранить данные, см. в разделе Управление ключами сервисных учетных записей .
- Нажмите «Закрыть» в диалоговом окне «Закрытый ключ, сохраненный на вашем компьютере» , затем нажмите « Готово», чтобы вернуться к таблице ваших учетных записей служб.
Добавить сервисный аккаунт в аккаунт Google Analytics
Вновь созданная учетная запись службы будет иметь адрес электронной почты <projectId>-<uniqueId>@developer.gserviceaccount.com
; Используйте этот адрес электронной почты, чтобы добавить пользователя в учетную запись Google Analytics, к которой вы хотите получить доступ через API. Для этого руководства необходимы только разрешения на чтение и анализ .
Шаг 2. Установите клиентскую библиотеку Google
Чтобы установить Java-клиент Google Analytics API, необходимо загрузить zip-файл, содержащий все файлы jar, которые необходимо извлечь и скопировать в путь к классам Java.
- Загрузите клиентскую библиотеку Google Analytics Java , которая поставляется в виде ZIP-файла со всеми необходимыми зависимостями.
- Извлеките ZIP-файл
- Добавьте все JAR-файлы из каталога
libs
в свой путь к классам. - Добавьте jar
google-api-services-analytics-v3-[version].jar
в свой путь к классам.
Шаг 3. Настройте образец
Вам нужно будет создать один файл с именем HelloAnalytics.java
, который будет содержать данный пример кода.
- Скопируйте или загрузите следующий исходный код в
HelloAnalytics.java
. - Переместите ранее загруженный
client_secrets.JSON
в тот же каталог, что и пример кода. - Замените значения
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
. В противном случае вы можете скомпилировать и запустить приложение из командной строки:
- Скомпилируйте образец, используя:
javac -classpath /path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics.java
- Запустите образец, используя:
java -classpath ./:/path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics
Когда вы выполните эти действия, в образце выводится имя первого представления (профиля) Google Analytics авторизованного пользователя и количество сеансов за последние семь дней.
С помощью авторизованного объекта службы Analytics теперь можно запускать любые примеры кода, приведенные в справочной документации по Management API . Например, вы можете попробовать изменить код, чтобы использовать метод accountSummaries.list .
,В этом руководстве описаны шаги, необходимые для доступа к учетной записи 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 и создать учетные данные.
Создайте идентификатор клиента
- Откройте страницу учетных записей службы . При появлении запроса выберите проект.
- Нажмите учетную запись службы» , введите имя и описание учетной записи службы. Вы можете использовать идентификатор учетной записи службы по умолчанию или выбрать другой, уникальный. Когда закончите, нажмите «Создать» .
- Следующий раздел «Разрешения учетной записи службы (необязательно)» не является обязательным. Нажмите Продолжить .
- На экране «Предоставить пользователям доступ к этой учетной записи службы» прокрутите вниз до раздела «Создать ключ» . Нажмите Создать ключ» .
- На появившейся боковой панели выберите формат вашего ключа: рекомендуется JSON .
- Нажмите Создать . Ваша новая пара открытого/закрытого ключей генерируется и загружается на ваш компьютер; он служит единственной копией этого ключа. Информацию о том, как безопасно хранить данные, см. в разделе Управление ключами сервисных учетных записей .
- Нажмите «Закрыть» в диалоговом окне «Закрытый ключ, сохраненный на вашем компьютере» , затем нажмите « Готово», чтобы вернуться к таблице ваших учетных записей служб.
Добавить сервисный аккаунт в аккаунт Google Analytics
Вновь созданная учетная запись службы будет иметь адрес электронной почты <projectId>-<uniqueId>@developer.gserviceaccount.com
; Используйте этот адрес электронной почты, чтобы добавить пользователя в учетную запись Google Analytics, к которой вы хотите получить доступ через API. Для этого руководства необходимы только разрешения на чтение и анализ .
Шаг 2. Установите клиентскую библиотеку Google
Чтобы установить Java-клиент Google Analytics API, необходимо загрузить zip-файл, содержащий все файлы jar, которые необходимо извлечь и скопировать в путь к классам Java.
- Загрузите клиентскую библиотеку Google Analytics Java , которая поставляется в виде ZIP-файла со всеми необходимыми зависимостями.
- Извлеките ZIP-файл
- Добавьте все JAR-файлы из каталога
libs
в свой путь к классам. - Добавьте jar
google-api-services-analytics-v3-[version].jar
в свой путь к классам.
Шаг 3. Настройте образец
Вам нужно будет создать один файл с именем HelloAnalytics.java
, который будет содержать данный пример кода.
- Скопируйте или загрузите следующий исходный код в
HelloAnalytics.java
. - Переместите ранее загруженный
client_secrets.JSON
в тот же каталог, что и пример кода. - Замените значения
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
. В противном случае вы можете скомпилировать и запустить приложение из командной строки:
- Скомпилируйте образец, используя:
javac -classpath /path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics.java
- Запустите образец, используя:
java -classpath ./:/path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics
Когда вы выполните эти действия, в образце выводится имя первого представления (профиля) Google Analytics авторизованного пользователя и количество сеансов за последние семь дней.
С помощью авторизованного объекта службы Analytics теперь можно запускать любые примеры кода, приведенные в справочной документации по Management API . Например, вы можете попробовать изменить код, чтобы использовать метод accountSummaries.list .