Аутентификация и авторизация

Как и другие 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, выполните следующие действия:

  1. Создайте учетные данные OAuth2:

    Следуйте инструкциям, чтобы создать сервисный аккаунт и JSON-файл ключа.

  2. Настройте клиентскую библиотеку:

    Укажите в конфигурации путь к 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
    

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

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

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

  1. Предоставьте одному пользователю доступ ко всем аккаунтам, которыми нужно управлять с помощью Google Ads API. Обычно пользователю предоставляют доступ к управляющему аккаунту Google Ads API и связывают с ним все аккаунты Google Рекламы.
  2. Пользователь запускает пример кода generate_user_credentials.pl, чтобы разрешить вашему приложению управлять всеми его аккаунтами Google Рекламы от его имени.

Ниже описано, как запустить интерактивный пример кода, который затем потребует от вас ввода данных.

  1. В терминале запустите пример 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
    
  2. В этом примере кода вам будет предложено перейти по 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.

    Окно запроса доступа OAuth 2.0

    Вы будете перенаправлены на страницу с сообщением об успешной авторизации.

    Authorization code was successfully retrieved.
    
  3. Вернитесь в консоль, в которой вы запускаете пример кода. Вы увидите, что пример кода выполнен и отображает ваш токен обновления и некоторые инструкции, за которыми следуют инструкции, которые вам нужно будет выполнить для настройки клиентской библиотеки:

    Replace the following keys and values in your googleads.properties
    configuration file:
    
    clientId=***********************apps.googleusercontent.com
    clientSecret=****
    refreshToken=****
    
  4. Чтобы завершить процесс, нажмите 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 есть примеры, показывающие, как обрабатывать такие случаи:

  1. Пример get_account_hierarchy.pl показывает, как получить список всех аккаунтов, относящихся к управляющему аккаунту Google Рекламы.
  2. Пример list_accessible_customers.pl показывает, как получить список всех аккаунтов, к которым у пользователя есть прямой доступ. Эти аккаунты можно использовать в качестве допустимых значений для настройки loginCustomerId в файле googleads.properties или переменной среды GOOGLE_ADS_LOGIN_CUSTOMER_ID.