Authentication

Как и другие 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();

Подробнее о рабочем процессе с сервисным аккаунтом…

Процесс аутентификации одного пользователя

Этот способ можно использовать, если вы не можете использовать сервисные аккаунты. Для этого рабочего процесса необходимо выполнить два этапа настройки:

  1. Предоставьте одному пользователю доступ ко всем аккаунтам, которыми нужно управлять с помощью Google Ads API. Обычно пользователю предоставляют доступ к управляющему аккаунту Google Ads API и связывают с ним все аккаунты Google Рекламы.
  2. Затем пользователь запускает инструмент командной строки, например 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 есть следующие примеры кода, которые показывают, как обрабатывать такие случаи:

  1. В примере кода GetAccountHierarchy показано, как получить список всех аккаунтов, связанных с управляющим аккаунтом Google Рекламы.
  2. В примере кода ListAccessibleCustomers показано, как получить список всех аккаунтов, к которым у пользователя есть прямой доступ. Эти аккаунты можно использовать в качестве допустимых значений для параметра loginCustomerId.