Рабочий процесс с сервисным аккаунтом

В этом руководстве рассказывается, как получить доступ к Google Ads API с помощью сервисных аккаунтов.

Сервисный аккаунт принадлежит приложению, а не отдельному конечному пользователю. Сервисные аккаунты используют процесс OAuth 2.0, который не требует авторизации пользователя. Вместо этого используется файл ключа, доступ к которому есть только у вашего приложения.

Применение сервисных аккаунтов дает два существенных преимущества:

  • Авторизация для доступа к аккаунтам Google Рекламы через Google Ads API выполняется на этапе настройки с использованием функций авторизации и управления аккаунтами, доступных в интерфейсе Google Рекламы. Это позволяет разработчикам не тратить силы на создание потоков OAuth 2.0 и решение проблем, связанных с взаимодействием с пользователем, хранением учетных данных и управлением токенами.

  • Авторизация доступа к аккаунтам Google Рекламы не связана с учетными данными отдельных пользователей. Это может быть полезно, если доступ должен сохраняться, даже если сотрудник, который изначально его предоставил, покинет команду или компанию.

Настройка доступа к аккаунту

  1. Для начала создайте сервисный аккаунт и учетные данные.

    Скачайте ключ сервисного аккаунта в формате JSON и запишите идентификатор и адрес электронной почты сервисного аккаунта.

  2. Войдите в аккаунт Google Рекламы в качестве администратора. Перейдите в раздел Администратор > Доступ и безопасность.

  3. Нажмите кнопку + на вкладке Пользователи.

  4. Введите адрес электронной почты сервисного аккаунта в поле Электронная почта. Выберите подходящий уровень доступа к аккаунту (обратите внимание, что сервисные аккаунты не поддерживают уровень доступа Только электронная почта) и нажмите кнопку Добавить аккаунт.

    Сервисному аккаунту предоставляется доступ.

  5. Необязательно. По умолчанию вы не можете предоставить сервисному аккаунту права администратора. Следуйте принципу минимальных привилегий и предоставляйте доступ с правами администратора, только если это необходимо для вызовов API. Вы можете повысить уровень доступа следующим образом:

    • Нажмите на стрелку раскрывающегося списка рядом с уровнем доступа сервисного аккаунта в столбце Уровень доступа.
    • В раскрывающемся списке выберите Администратор.

Настройка клиентской библиотеки

Выберите вкладку с инструкциями по настройке клиентской библиотеки для вашего языка программирования. Если сервисный аккаунт получает доступ к клиентским аккаунтам через управляющий аккаунт Google Рекламы, также задайте для параметра login-customer-id (или loginCustomerId) 10-значный идентификатор клиента этого управляющего аккаунта без дефисов (см. Идентификатор клиента для входа).

Java

Укажите путь к JSON-файлу закрытого ключа в конфигурации. Если вы используете файл ads.properties, добавьте следующее:

api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH

Подробная информация приведена в руководстве по настройке.

.NET

Задайте значения OAuth2Mode и OAuth2SecretsJsonPath для экземпляра GoogleAdsConfig и используйте его для инициализации объекта GoogleAdsClient.

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
    OAuth2SecretsJsonPath = "JSON_KEY_FILE_PATH",
    // ...
};
GoogleAdsClient client = new GoogleAdsClient(config);

Подробная информация приведена в руководстве по настройке.

Python

Укажите путь к JSON-файлу закрытого ключа в конфигурации. Если вы используете файл google-ads.yaml, строку YAML или dict, добавьте следующее:

json_key_file_path: JSON_KEY_FILE_PATH

Если вы используете переменные среды, добавьте в конфигурацию или среду Bash следующее:

export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH

Подробная информация приведена в руководстве по настройке.

PHP

Настройте следующие ключи в файле google_ads_php.ini.

[OAUTH2]
; For service account flow.
jsonKeyFilePath = "JSON_KEY_FILE_PATH"
scopes = "https://www.googleapis.com/auth/adwords"

Подробная информация приведена в руководстве по настройке.

Ruby

Настройте следующие ключи в файле google_ads_config.rb.

c.keyfile = 'JSON_KEY_FILE_PATH'

Подробная информация приведена в руководстве по настройке.

Perl

Укажите путь к JSON-файлу закрытого ключа в конфигурации. Если вы используете файл googleads.properties, добавьте следующее:

jsonKeyFilePath=JSON_KEY_FILE_PATH

Если вы используете переменные среды, добавьте в конфигурацию или среду Bash следующее:

export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH

Подробная информация приведена в руководстве по настройке.

curl

Сначала задайте сервисный аккаунт в качестве активных учетных данных в интерфейсе командной строки gcloud.

gcloud auth login --cred-file=JSON_KEY_FILE_PATH

Затем получите токен доступа OAuth 2.0 для Google Ads API.

gcloud auth \
  print-access-token \
  --scopes='https://www.googleapis.com/auth/adwords'

Вы можете использовать токен доступа в вызовах API. В приведенном ниже примере показано, как создать отчет о кампании с помощью метода GoogleAdsService.SearchStream, чтобы получить список кампаний в аккаунте. В этом руководстве не рассматриваются подробности создания отчетов.

curl -i -X POST \
  https://googleads.googleapis.com/v25/customers/CUSTOMER_ID/googleAds:searchStream \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "login-customer-id: LOGIN_CUSTOMER_ID" \
  --data-binary "@query.json"

Содержимое файла query.json:

{
  "query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}