Как и другие API Google, Google Ads API использует протокол OAuth 2.0 для аутентификации и авторизации. OAuth 2.0 позволяет клиентскому приложению Google Ads API получить доступ к аккаунту Google Рекламы пользователя без необходимости обрабатывать или хранить данные для входа пользователя.
Модель доступа к Google Рекламе
Чтобы эффективно работать с Google Ads API, необходимо понимать, как работает модель доступа Google Рекламы. Ознакомьтесь с руководством по модели доступа к Google Рекламе.
Рабочие процессы OAuth
При работе с Google Ads API обычно используются три рабочих процесса.
Процесс для сервисного аккаунта
Это рекомендуемый рабочий процесс, если он не требует участия человека. Этот рабочий процесс требует настройки, в ходе которой пользователь добавляет сервисный аккаунт в свой аккаунт Google Рекламы. После этого приложение сможет использовать учетные данные сервисного аккаунта для управления аккаунтом Google Рекламы пользователя.
Библиотеку PHP можно настроить следующим образом:
$oAuth2Credential = (new OAuth2TokenBuilder())
->withJsonKeyFilePath('INSERT_PATH_TO_JSON_KEY_FILE_HERE')
// Optional in v32.1.0 and later (defaults to
// 'https://www.googleapis.com/auth/adwords').
->withScopes('https://www.googleapis.com/auth/adwords')
->build();
$googleAdsClient = (new GoogleAdsClientBuilder())
->withOAuth2Credential($oAuth2Credential)
->build();
Подробнее о рабочем процессе с сервисным аккаунтом…
Процесс аутентификации одного пользователя
Этот способ можно использовать, если вы не можете использовать сервисные аккаунты. Для этого рабочего процесса необходимо выполнить два этапа настройки:
- Предоставьте одному пользователю доступ ко всем аккаунтам, которыми нужно управлять с помощью Google Ads API. Обычно пользователю предоставляют доступ к управляющему аккаунту Google Ads API и связывают с ним все аккаунты Google Рекламы.
- Затем пользователь запускает инструмент командной строки, например
GenerateUserCredentials, чтобы предоставить вашему приложению разрешение на управление всеми своими аккаунтами Google Рекламы.
Библиотеку можно инициализировать с помощью учетных данных OAuth 2.0 пользователя следующим образом:
$oAuth2Credential = (new OAuth2TokenBuilder())
->withClientId('INSERT_CLIENT_ID_HERE')
->withClientSecret('INSERT_CLIENT_SECRET_HERE')
->withRefreshToken('INSERT_REFRESH_TOKEN_HERE')
->build();
$googleAdsClient = (new GoogleAdsClientBuilder())
->withOAuth2Credential($oAuth2Credential)
->withLoginCustomerId('INSERT_LOGIN_CUSTOMER_ID_HERE')
->build();
Подробную информацию можно найти в руководстве по аутентификации одного пользователя.
Процесс аутентификации нескольких пользователей
Это рекомендуемый рабочий процесс, если ваше приложение позволяет пользователям входить в аккаунт и авторизовать его для управления аккаунтами Google Рекламы от их имени. Ваше приложение динамически создает учетные данные OAuth 2.0 для каждого сеанса аутентифицированного пользователя и управляет ими. Библиотеку можно инициализировать с помощью учетных данных пользователя, вошедшего в аккаунт, следующим образом:
// Construct credentials dynamically per authenticated user session.
$oAuth2Credential = (new OAuth2TokenBuilder())
->withClientId('INSERT_CLIENT_ID_HERE')
->withClientSecret('INSERT_CLIENT_SECRET_HERE')
->withRefreshToken($userRefreshToken)
->build();
$googleAdsClient = (new GoogleAdsClientBuilder())
->withOAuth2Credential($oAuth2Credential)
->withLoginCustomerId($userLoginCustomerId)
->build();
Подробную информацию вы найдете в руководстве по рабочему процессу добавления пользователей.
Application Default Credentials
Клиентская библиотека PHP также поддерживает аутентификацию с помощью Application Default Credentials (ADC). Если в OAuth2TokenBuilder не заданы учетные данные ни для режима приложения (clientId, clientSecret, refreshToken), ни для режима сервисного аккаунта (jsonKeyFilePath), то при вызове build() автоматически используются Application Default Credentials:
$oAuth2Credential = (new OAuth2TokenBuilder())->build();
$googleAdsClient = (new GoogleAdsClientBuilder())
->withOAuth2Credential($oAuth2Credential)
->withLoginCustomerId('INSERT_LOGIN_CUSTOMER_ID_HERE')
->build();
Управление несколькими аккаунтами
Часто пользователи управляют несколькими аккаунтами Google Рекламы, либо имея прямой доступ к ним, либо через управляющий аккаунт Google Рекламы. В клиентской библиотеке PHP есть следующие примеры кода, которые показывают, как обрабатывать такие случаи:
- В примере кода
GetAccountHierarchyпоказано, как получить список всех аккаунтов, связанных с управляющим аккаунтом Google Рекламы. - В примере кода
ListAccessibleCustomersпоказано, как получить список всех аккаунтов, к которым у пользователя есть прямой доступ. Эти аккаунты можно использовать в качестве допустимых значений для параметраloginCustomerId.