В этом руководстве рассказывается, как получить доступ к Google Ads API с помощью сервисных аккаунтов.
Сервисный аккаунт принадлежит приложению, а не отдельному конечному пользователю. Сервисные аккаунты используют процесс OAuth 2.0, который не требует авторизации пользователя. Вместо этого используется файл ключа, доступ к которому есть только у вашего приложения.
Применение сервисных аккаунтов дает два существенных преимущества:
Авторизация для доступа к аккаунтам Google Рекламы через Google Ads API выполняется на этапе настройки с использованием функций авторизации и управления аккаунтами, доступных в интерфейсе Google Рекламы. Это позволяет разработчикам не тратить силы на создание потоков OAuth 2.0 и решение проблем, связанных с взаимодействием с пользователем, хранением учетных данных и управлением токенами.
Авторизация доступа к аккаунтам Google Рекламы не связана с учетными данными отдельных пользователей. Это может быть полезно, если доступ должен сохраняться, даже если сотрудник, который изначально его предоставил, покинет команду или компанию.
Настройка доступа к аккаунту
Для начала создайте сервисный аккаунт и учетные данные.
Скачайте ключ сервисного аккаунта в формате JSON и запишите идентификатор и адрес электронной почты сервисного аккаунта.
Войдите в аккаунт Google Рекламы в качестве администратора. Перейдите в раздел Администратор > Доступ и безопасность.
Нажмите кнопку + на вкладке Пользователи.
Введите адрес электронной почты сервисного аккаунта в поле Электронная почта. Выберите подходящий уровень доступа к аккаунту (обратите внимание, что сервисные аккаунты не поддерживают уровень доступа Только электронная почта) и нажмите кнопку Добавить аккаунт.
Сервисному аккаунту предоставляется доступ.
Необязательно. По умолчанию вы не можете предоставить сервисному аккаунту права администратора. Следуйте принципу минимальных привилегий и предоставляйте доступ с правами администратора, только если это необходимо для вызовов 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"
}