Как и другие API Google, API Google Ads использует протокол OAuth 2.0 для аутентификации и авторизации. OAuth 2.0 позволяет вашему клиентскому приложению Google Ads API получать доступ к учетной записи пользователя Google Ads без необходимости обработки или хранения информации для входа пользователя.
Разберитесь в модели доступа к рекламным объявлениям Google.
Для эффективной работы с API Google Ads необходимо понимать, как работает модель доступа Google Ads. Мы рекомендуем ознакомиться с руководством по модели доступа Google Ads .
Рабочие процессы OAuth
При работе с API Google Ads используются три распространенных рабочих процесса.
поток учетных записей сервиса
Это рекомендуемый рабочий процесс, если ваш рабочий процесс не требует участия человека. Этот рабочий процесс включает этап настройки, на котором пользователь добавляет сервисный аккаунт в свой аккаунт Google Ads. Затем приложение может использовать учетные данные сервисного аккаунта для управления аккаунтом Google Ads пользователя. Для настройки создайте и загрузите файл ключа JSON в консоли Google Cloud, затем скопируйте файл google_ads_config.rb в свой домашний каталог и измените его, указав расположение файла ключа сервисного аккаунта и адрес электронной почты пользователя, от имени которого будет осуществляться имитация:
# You can also authenticate using a service account. If "keyfile" is
# specified below, then service account authentication will be assumed and
# the above authentication fields ignored. Read more about service account
# authentication here:
# https://developers.google.com/google-ads/api/docs/oauth/service-accounts
# c.keyfile = 'path/to/keyfile.json'
# c.impersonate = 'INSERT_EMAIL_ADDRESS_TO_IMPERSONATE_HERE'
Если вы предпочитаете не хранить эту информацию в файле и хотите использовать переменные среды, вы можете установить значения GOOGLE_ADS_JSON_KEY_FILE_PATH и GOOGLE_ADS_IMPERSONATED_EMAIL соответственно.
export GOOGLE_ADS_JSON_KEY_FILE_PATH="/path/to/your/service-account-key.json"
export GOOGLE_ADS_IMPERSONATED_EMAIL="your_email@email.com"
Также можно передавать информацию программно во время выполнения, используя гем googleauth для создания учетных данных из JSON-файла сервисной учетной записи:
require 'googleauth'
require 'google/ads/google_ads'
# Path to your service account key file
key_file = "/path/to/your/service-account-key.json"
# Define the scopes needed for the Google Ads API
scopes = ['https://www.googleapis.com/auth/adwords']
# Create service account credentials
credentials = Google::Auth::ServiceAccountCredentials.make_creds(
json_key_io: File.open(key_file),
scope: scopes
)
# Initialize the Google Ads API client with these credentials
client = Google::Ads::GoogleAds::Client.new do |config|
config.developer_token = "YOUR_DEVELOPER_TOKEN"
# Inject the service account credentials
config.oauth2_client = credentials
end
Для получения более подробной информации обратитесь к руководству по рабочему процессу учетной записи службы .
Процесс аутентификации одного пользователя
Этот рабочий процесс можно использовать, если вы не можете использовать служебные учетные записи. Для его выполнения требуется два этапа настройки:
- Предоставьте одному пользователю доступ ко всем аккаунтам, управляемым с помощью API Google Ads. Распространенный подход заключается в предоставлении пользователю учетной записи менеджера API Google Ads и объединении всех аккаунтов Google Ads под этой учетной записью менеджера.
- Пользователь запускает инструмент командной строки, такой как gcloud или пример кода
GenerateUserCredentials, чтобы авторизовать ваше приложение для управления всеми его аккаунтами Google Ads от его имени.
Для настройки учетных данных OAuth 2.0 в Ruby необходимо скопировать файл google_ads_config.rb в домашний каталог и изменить его, добавив токен разработчика, идентификатор клиента, секретный ключ клиента и токен обновления.
# The developer token is required to authenticate that you are allowed to
# make API calls.
c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
# Authentication tells the API that you are allowed to make changes to the
# specific account you're trying to access.
# The default method of authentication is to use a refresh token, client id,
# and client secret to generate an access token.
c.client_id = 'INSERT_CLIENT_ID_HERE'
c.client_secret = 'INSERT_CLIENT_SECRET_HERE'
c.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
Если экземпляр клиента создан без аргументов, он автоматически прочитает файл конфигурации из домашнего каталога.
client = Google::Ads::GoogleAds::GoogleAdsClient.new
В качестве альтернативы, если вы предпочитаете хранить файл в другом месте, вы можете создать экземпляр клиента, указав путь к месту, где хранится этот файл:
client = Google::Ads::GoogleAds::GoogleAdsClient.new('path/to/google_ads_config.rb')
Если вы предпочитаете не хранить эту информацию в файле и хотите использовать переменные окружения, вы можете установить каждую из них:
export GOOGLE_ADS_DEVELOPER_TOKEN="INSERT_DEVELOPER_TOKEN_HERE"
export GOOGLE_ADS_CLIENT_ID="INSERT_CLIENT_ID_HERE"
export GOOGLE_ADS_CLIENT_SECRET="INSERT_CLIENT_SECRET_HERE"
export GOOGLE_ADS_REFRESH_TOKEN="INSERT_REFRESH_TOKEN_HERE"
Вы также можете передавать информацию программно во время выполнения:
client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
config.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
config.client_id = 'INSERT_CLIENT_ID_HERE'
config.client_secret = 'INSERT_CLIENT_SECRET_HERE'
config.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
end
Для получения более подробной информации обратитесь к руководству по рабочему процессу аутентификации одного пользователя .
Процесс аутентификации нескольких пользователей
Это рекомендуемый рабочий процесс, если ваше приложение позволяет пользователям входить в систему и авторизовывать ваше приложение для управления их аккаунтами Google Ads от их имени. Ваше приложение формирует и управляет учетными данными пользователя OAuth 2.0. Этот рабочий процесс можно настроить аналогично процессу для одного пользователя, но с указанием также параметра login_customer_id .
Мы рекомендуем использовать конфигурационный файл. Скопируйте файл google_ads_config.rb в свою домашнюю директорию и измените его, добавив ваш токен разработчика, идентификатор клиента, секретный ключ клиента, токен обновления и идентификатор клиента:
# The developer token is required to authenticate that you are allowed to
# make API calls.
c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
# Authentication tells the API that you are allowed to make changes to the
# specific account you're trying to access.
# The default method of authentication is to use a refresh token, client id,
# and client secret to generate an access token.
c.client_id = 'INSERT_CLIENT_ID_HERE'
c.client_secret = 'INSERT_CLIENT_SECRET_HERE'
c.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
# Required for manager accounts only: Specify the login customer ID used to
# authenticate API calls. This will be the customer ID of the authenticated
# manager account. If you need to use different values for this field, then
# make sure fetch a new copy of the service after each time you change the
# value.
# c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
Если экземпляр клиента создан без аргументов, он автоматически прочитает файл конфигурации из домашнего каталога.
client = Google::Ads::GoogleAds::GoogleAdsClient.new
В качестве альтернативы, если вы предпочитаете хранить файл в другом месте, вы можете создать экземпляр клиента, указав путь к месту, где хранится этот файл:
client = Google::Ads::GoogleAds::GoogleAdsClient.new('path/to/google_ads_config.rb')
Если вы предпочитаете не хранить эту информацию в файле и хотите использовать переменные окружения, вы можете установить каждую из них:
export GOOGLE_ADS_DEVELOPER_TOKEN="INSERT_DEVELOPER_TOKEN_HERE"
export GOOGLE_ADS_CLIENT_ID="INSERT_CLIENT_ID_HERE"
export GOOGLE_ADS_CLIENT_SECRET="INSERT_CLIENT_SECRET_HERE"
export GOOGLE_ADS_REFRESH_TOKEN="INSERT_REFRESH_TOKEN_HERE"
export GOOGLE_ADS_LOGIN_CUSTOMER_ID="INSERT_LOGIN_CUSTOMER_ID_HERE"
Вы также можете передавать информацию программно во время выполнения:
client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
config.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
config.client_id = 'INSERT_CLIENT_ID_HERE'
config.client_secret = 'INSERT_CLIENT_SECRET_HERE'
config.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
config.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end
Для получения дополнительной информации обратитесь к руководству по рабочему процессу многопользовательской аутентификации . Клиентская библиотека Ruby содержит пример кода для ознакомления. GenerateUserCredentials — это пример кода командной строки, демонстрирующий, как получить аутентификационные данные пользователя во время выполнения для управления его аккаунтами Google Ads от его имени. Вы можете использовать этот пример кода в качестве образца для создания настольных приложений, требующих аутентификации пользователей.
Что произойдет, если пользователь управляет несколькими учетными записями?
Нередко пользователь управляет несколькими аккаунтами Google Ads, либо напрямую, либо через аккаунт менеджера Google Ads. Клиентская библиотека Ruby предоставляет следующие примеры кода, иллюстрирующие обработку таких случаев.
- Пример кода GetAccountHierarchy демонстрирует, как получить список всех аккаунтов, находящихся в учетной записи менеджера Google Ads.
- Пример кода ListAccessibleCustomers показывает, как получить список всех учетных записей, к которым пользователь имеет прямой доступ. Затем эти учетные записи можно использовать в качестве допустимых значений для параметра
LoginCustomerId.
Учетные данные приложения по умолчанию
Клиентская библиотека Ruby также поддерживает аутентификацию с использованием учетных данных приложения по умолчанию (ADC) . Она позволяет установить учетные данные по умолчанию для вашего приложения без необходимости настраивать информацию OAuth 2.0 в конфигурации приложения.
Это особенно полезно для локальной разработки или разработки с использованием различных API Google, поскольку можно повторно использовать одни и те же учетные данные при условии, что они имеют доступ к соответствующим областям действия OAuth 2.0.
Для API Google Ads убедитесь, что ваши учетные данные по умолчанию имеют доступ к области действия OAuth 2.0 https://www.googleapis.com/auth/adwords .
Для использования учетных данных приложения по умолчанию мы рекомендуем использовать инструмент командной строки Google Cloud и выполнить аутентификацию в ADC:
gcloud auth application-default login
Эта команда откроет веб-браузер для завершения процесса аутентификации вашей учетной записи Google. После авторизации учетные данные будут сохранены в стандартном месте. Затем вам потребуется обновить ваше приложение для использования ADC.
Мы рекомендуем использовать конфигурационный файл. Скопируйте файл google_ads_config.rb в свою домашнюю директорию, затем добавьте свой токен разработчика и установите use_application_default_credentials в значение true:
# The developer token is required to authenticate that you are allowed to
# make API calls.
c.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
# You can also authenticate using Application Default Credentials (ADC)
# To understand how ADC discovers credentials in a given environment,
# see: https://developers.google.com/identity/protocols/application-default-credentials.
c.use_application_default_credentials = true
Если вы предпочитаете не хранить эту информацию в файле и хотите использовать переменные среды, вы можете установить значения GOOGLE_ADS_DEVELOPER_TOKEN и GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS :
export GOOGLE_ADS_DEVELOPER_TOKEN="INSERT_DEVELOPER_TOKEN_HERE"
export GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS="true"
Вы также можете передавать информацию программно во время выполнения. При инициализации клиента в вашем коде Ruby не указывайте явные учетные данные OAuth2. Библиотека автоматически обнаружит и использует учетные данные, установленные инструментом командной строки Google Cloud. Вам все равно потребуется указать свой токен разработчика.
# Initialize the client. It will automatically use Application Default Credentials.
client = Google::Ads::GoogleAds::Client.new do |config|
# Developer Token is mandatory for the Google Ads API.
config.developer_token = "YOUR_DEVELOPER_TOKEN"
# Optional: Specify a login customer ID if you are accessing accounts
# through a manager account.
# config.login_customer_id = "YOUR_LOGIN_CUSTOMER_ID"
# Do NOT include oauth2_client_id, oauth2_client_secret, or oauth2_refresh_token here.
end
Для получения более подробной информации о доступных параметрах настройки клиентской библиотеки Ruby обратитесь к странице конфигурации .