Как и другие API Google, Google Ads API использует протокол OAuth 2.0 для аутентификации и авторизации. OAuth 2.0 позволяет API-клиенту Google Ads API получать доступ к аккаунту Google Рекламы без необходимости обрабатывать или хранить данные для входа.
Модель доступа в Google Рекламе
Чтобы эффективно работать с Google Ads API, необходимо понимать, как устроена модель доступа Google Рекламы. Ознакомьтесь с руководством по модели доступа к Google Рекламе.
Рабочие процессы OAuth
При работе с Google Ads API обычно используются три рабочих процесса.
Порядок действий для сервисного аккаунта
Это рекомендуемый рабочий процесс, если он не требует участия человека. Этот рабочий процесс требует настройки, в ходе которой пользователь добавляет сервисный аккаунт в свой аккаунт Google Рекламы. После этого приложение сможет использовать учетные данные сервисного аккаунта для управления аккаунтом Google Рекламы пользователя.
Ниже описано, как настроить OAuth2 для доступа к API с использованием собственных учетных данных с сервисным аккаунтом в клиентской библиотеке Perl.
Создайте учетные данные OAuth2:
Следуйте инструкциям, чтобы создать сервисный аккаунт и JSON-файл ключа.
Настройте клиентскую библиотеку:
Укажите путь к JSON-файлу закрытого ключа (и, при необходимости,
impersonatedEmail, если используется делегирование доступа к данным в домене Google Workspace) в конфигурации. Если вы используете файлgoogleads.properties, добавьте следующее:jsonKeyFilePath=PRIVATE_KEY_FILE_PATH # Optional unless using Google Workspace domain-wide delegation: impersonatedEmail=IMPERSONATED_EMAIL loginCustomerId=LOGIN_CUSTOMER_IDЕсли вы используете переменные среды, добавьте в конфигурацию или среду Bash следующее:
export GOOGLE_ADS_JSON_KEY_FILE_PATH=KEY_FILE_PATH export GOOGLE_ADS_IMPERSONATED_EMAIL=\ IMPERSONATED_EMAIL export GOOGLE_ADS_LOGIN_CUSTOMER_ID=LOGIN_CUSTOMER_IDПодробнее о рабочем процессе с сервисным аккаунтом…
Процесс аутентификации одного пользователя
Этот рабочий процесс можно использовать, если вы не можете использовать сервисные аккаунты. Для этого рабочего процесса необходимо выполнить два этапа настройки:
- Предоставьте одному пользователю доступ ко всем аккаунтам, которыми нужно управлять с помощью Google Ads API. Обычно пользователю предоставляют доступ к управляющему аккаунту Google Ads API и связывают с ним все аккаунты Google Рекламы.
- Пользователь запускает пример кода
generate_user_credentials.pl, чтобы разрешить вашему приложению управлять всеми его аккаунтами Google Рекламы от его имени.
Ниже описано, как запустить интерактивный пример кода, в который нужно будет ввести данные.
В терминале запустите пример
generate_user_credentials.plв каталогеexamples. Вы можете изменить значенияINSERT_XXX_HEREв примере перед запуском или использовать аргументы командной строки-client_idдля идентификатора клиента и-client_secretдля секретного кода клиента.perl generate_user_credentials.pl \ -client_id OAUTH_CLIENT_ID \ -client_secret OAUTH_CLIENT_SECRETВ этом примере кода вам будет предложено перейти по URL, где вы должны разрешить приложению доступ к вашему аккаунту Google Рекламы от вашего имени.
Paste this url in your browser: https://accounts.google.com/o/oauth2/v2/auth?response_type=code&access_type=offline...Перейдите по URL в режиме инкогнито. Войдите в аккаунт Google, который вы используете для доступа к Google Рекламе. Обычно это аккаунт электронной почты, у которого есть доступ к управляющему аккаунту Google Рекламы, содержащему все аккаунты, которыми вам нужно управлять в иерархии аккаунтов. Нажмите Продолжить в окне запроса доступа OAuth 2.0.

Вы будете перенаправлены на страницу с сообщением об успешной авторизации.
Authorization code was successfully retrieved.Вернитесь в консоль, в которой вы выполняете пример кода. Вы увидите, что пример кода выполнен и в нем отображается токен обновления и некоторые инструкции, а также инструкции по настройке клиентской библиотеки:
Replace the following keys and values in your googleads.properties configuration file: clientId=***********************apps.googleusercontent.com clientSecret=**** refreshToken=****Чтобы завершить процесс, нажмите
Ctrl + C. Затем скопируйте сгенерированный токен обновления вместе с идентификатором клиента и секретным кодом клиента в файлgoogleads.propertiesили сохраните в другом месте, чтобы использовать при создании экземпляра библиотеки во время выполнения.
Библиотеку можно инициализировать с помощью учетных данных OAuth 2.0 пользователя, задав в файле googleads.properties следующие параметры:
clientId=OAUTH_CLIENT_ID
clientSecret=OAUTH_CLIENT_SECRET
refreshToken=REFRESH_TOKEN
loginCustomerId=LOGIN_CUSTOMER_ID
Вы также можете использовать переменные среды:
export GOOGLE_ADS_CLIENT_ID=OAUTH_CLIENT_ID
export GOOGLE_ADS_CLIENT_SECRET=OAUTH_CLIENT_SECRET
export GOOGLE_ADS_REFRESH_TOKEN=REFRESH_TOKEN
export GOOGLE_ADS_LOGIN_CUSTOMER_ID=LOGIN_CUSTOMER_ID
Подробную информацию можно найти в руководстве по аутентификации одного пользователя.
Процедура аутентификации нескольких пользователей
Это рекомендуемый рабочий процесс, если ваше приложение позволяет пользователям входить в систему и разрешать вашему приложению управлять своими аккаунтами Google Рекламы от их имени. Ваше приложение создает учетные данные пользователя OAuth 2.0 и управляет ими.
Для Perl обычно реализуется процесс веб-приложения, в котором приложение обрабатывает перенаправление OAuth 2.0 и управление токенами. Пользователь проходит аутентификацию в вашем приложении, а оно сохраняет и использует его токен обновления, чтобы совершать вызовы API от его имени.
Конфигурация для использования полученных учетных данных такая же, как и для процесса аутентификации одного пользователя:
clientId=OAUTH_CLIENT_ID
clientSecret=OAUTH_CLIENT_SECRET
refreshToken=REFRESH_TOKEN
loginCustomerId=LOGIN_CUSTOMER_ID
Также можно использовать переменные среды:
export GOOGLE_ADS_CLIENT_ID=OAUTH_CLIENT_ID
export GOOGLE_ADS_CLIENT_SECRET=OAUTH_CLIENT_SECRET
export GOOGLE_ADS_REFRESH_TOKEN=REFRESH_TOKEN
export GOOGLE_ADS_LOGIN_CUSTOMER_ID=LOGIN_CUSTOMER_ID
Подробную информацию можно найти в руководстве по рабочему процессу добавления пользователей.
Что делать, если у пользователя несколько аккаунтов?
Часто пользователи управляют несколькими аккаунтами Google Рекламы, либо имея прямой доступ к ним, либо через управляющий аккаунт Google Рекламы. В клиентской библиотеке Perl есть примеры, показывающие, как обрабатывать такие случаи:
- В примере
get_account_hierarchy.plпоказано, как получить список всех аккаунтов, связанных с управляющим аккаунтом Google Рекламы. - В примере
list_accessible_customers.plпоказано, как получить список всех аккаунтов, к которым у пользователя есть прямой доступ. Затем эти аккаунты можно использовать в качестве допустимых значений для настройкиloginCustomerIdв файлеgoogleads.propertiesили переменной средыGOOGLE_ADS_LOGIN_CUSTOMER_ID.