Аналогично процессу аутентификации служебных учетных записей , однопользовательская аутентификация использует функции авторизации и управления пользователями, предоставляемые пользовательским интерфейсом Google Ads, для предоставления приложению доступа ко всем необходимым учетным записям. Этот процесс аутентификации состоит из двух этапов:
- Вы предоставляете одному пользователю доступ ко всем аккаунтам Google Ads , которые должны управляться приложением.
- Пользователь разрешает вашему приложению управлять его аккаунтами Google Ads от его имени, предоставляя таким образом приложению доступ ко всем аккаунтам Google Ads.
Поскольку задействован только один пользователь, вы можете использовать такие инструменты, как CLI gcloud или пример кода GenerateUserCredential, вместо того, чтобы создавать собственный поток аутентификации пользователей OAuth 2.0.
Ещё один пример использования этого рабочего процесса — когда доступ к вашим учётным записям осуществляется через небольшое количество пользовательских входов (например, от 3 до 4 пользователей), поэтому затраты на разработку полноценного многопользовательского процесса аутентификации OAuth не оправданы по сравнению с затратами на получение авторизации для 3-4 пользователей с помощью инструмента командной строки, такого как gcloud CLI.
Недостатки
По сравнению с рабочим процессом с использованием служебных учетных записей, у этого подхода есть несколько недостатков:
- Для аутентификации пользователя необходимо создать идентификатор клиента и секретный ключ OAuth 2.0 в консоли Google Cloud, что требует больше шагов настройки, чем создание учетной записи службы и ключа.
- Если авторизованный пользователь покинет команду или компанию, ваше приложение может перестать работать, если вы удалите пользователя из своих учетных записей или заблокируете его учетную запись. Служебные учетные записи не привязаны к отдельным пользователям, поэтому этот риск исключен.
- Пользователь, авторизующий аккаунт Google Ads, должен включить пароли в своем аккаунте Google, чтобы защитить его от взлома из-за недостаточной безопасности, вредоносного ПО или фишинга. Для служебных аккаунтов включение паролей не требуется, и они менее уязвимы для этой проблемы, поскольку некоторые из этих способов атаки к ним напрямую не применяются.
Сгенерировать учетные данные
Настройте экран согласия OAuth для вашего приложения и добавьте
https://www.googleapis.com/auth/adwordsв качестве области действия OAuth 2.0. Подробности см. в разделе «Настройка экрана согласия OAuth» .Создайте идентификатор клиента и секретный ключ клиента, следуя инструкциям . После создания клиента OAuth 2.0 загрузите JSON-файл клиента, нажав кнопку «Загрузить JSON» в диалоговом окне подтверждения. Сохраните файл как
credentials.json.Найдите учетную запись пользователя, которая имеет доступ ко всем аккаунтам Google Ads, которыми вы хотите управлять с помощью своего приложения. Если есть аккаунты, у которых отсутствует доступ, предоставьте доступ к этим аккаунтам соответствующим пользователям.
Загрузите и установите gcloud CLI. После установки убедитесь, что инструмент работает правильно, выполнив команду `
gcloud versionиз командной строки. Вывод будет выглядеть примерно так:gcloud versionGoogle Cloud SDK 492.0.0 alpha 2024.09.06 beta 2024.09.06 bq 2.1.8 bundled-python3-unix 3.11.9 core 2024.09.06 enterprise-certificate-proxy 0.3.2 gcloud-crc32c 1.0.0Для генерации токена обновления OAuth 2.0 запустите инструмент командной строки gcloud, используя файл
credentials.jsonиз предыдущего шага. Необходимо передать--client-id-file, чтобы токен обновления был выдан в рамках вашего проекта Google API Console, а не в проекте по умолчанию, используемом инструментом командной строки gcloud.gcloud auth application-default login \ --scopes=https://www.googleapis.com/auth/adwords,https://www.googleapis.com/auth/cloud-platform \ --client-id-file=PATH_TO_CREDENTIALS_JSONКоманда
gcloudоткрывает окно входа в учетную запись Google в новом окне браузера и проводит вас через этапы аутентификации OAuth 2.0. Убедитесь, что вы вошли в систему под пользователем, которого выбрали на предыдущих шагах. Если ваше приложение не проверено , вы можете увидеть предупреждение. В таких случаях можно безопасно перейти по ссылке «Дополнительно» и выбрать опцию « Перейти к PROJECT_NAME (небезопасно)» .После проверки прав доступа нажмите кнопку «Продолжить» , чтобы предоставить необходимые разрешения. Браузер перейдет по адресу
https://cloud.google.com/sdk/auth_success, что будет означать успешную аутентификацию. На странице отобразится следующее сообщение:Authorization code granted. Close this tab.Команда
gcloudвыводит следующее сообщение:Credentials saved to file: [/****/.config/gcloud/application_default_credentials.json]Откройте файл
application_default_credentials.json. Его содержимое будет примерно следующим:{ "account": "", "client_id": "******.apps.googleusercontent.com", "client_secret": "******", "refresh_token": "******", "type": "authorized_user", "universe_domain": "googleapis.com" }
Конфигурация клиентской библиотеки
Выберите вкладку, соответствующую вашему языку программирования, чтобы получить инструкции по настройке библиотеки клиентских объявлений. Если авторизованный пользователь получает доступ к клиентским аккаунтам через аккаунт менеджера Google Ads (MCC), установите login-customer-id (или loginCustomerId ) равным 10-значному идентификатору клиента этого аккаунта менеджера без дефисов.
Java
Настройте следующие ключи в файле ads.properties .
api.googleads.clientId=INSERT_OAUTH2_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
Дополнительные параметры см. в руководстве по настройке .
.СЕТЬ
Укажите учетные данные OAuth 2.0 для экземпляра GoogleAdsConfig и используйте их для инициализации объекта GoogleAdsClient .
GoogleAdsConfig config = new GoogleAdsConfig()
{
OAuth2Mode = OAuth2Flow.APPLICATION,
OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID_HERE",
OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE",
OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE",
};
GoogleAdsClient client = new GoogleAdsClient(config);
Дополнительные параметры см. в руководстве по настройке .
Python
Настройте следующие ключи в файле google-ads.yaml .
client_id: INSERT_OAUTH2_CLIENT_ID_HERE
client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE
refresh_token: INSERT_OAUTH2_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
use_proto_plus: True
Дополнительные параметры см. в руководстве по настройке .
PHP
Настройте следующие ключи в файле google_ads_php.ini .
[GOOGLE_ADS]
loginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
[OAUTH2]
clientId = "INSERT_OAUTH2_CLIENT_ID_HERE"
clientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE"
refreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE"
Дополнительные параметры см. в руководстве по настройке .
Руби
Настройте следующие ключи в файле google_ads_config.rb .
Google::Ads::GoogleAds::Config.new do |c|
c.client_id = 'INSERT_OAUTH2_CLIENT_ID_HERE'
c.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
c.refresh_token = 'INSERT_OAUTH2_REFRESH_TOKEN_HERE'
c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end
Дополнительные параметры см. в руководстве по настройке .
Perl
Настройте следующие ключи в файле googleads.properties .
clientId=INSERT_OAUTH2_CLIENT_ID_HERE
clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
Дополнительные параметры см. в руководстве по настройке .
локон
Для начала воспользуйтесь HTTP-клиентом, чтобы получить токен доступа OAuth 2.0. В этом руководстве используется команда curl .
curl \
--data "grant_type=refresh_token" \
--data "client_id=CLIENT_ID" \
--data "client_secret=CLIENT_SECRET" \
--data "refresh_token=REFRESH_TOKEN" \
https://oauth2.googleapis.com/tokenВы можете использовать токен доступа в своих вызовах API. В следующем примере показано, как создать отчет по кампании, используя метод GoogleAdsService.SearchStream для получения информации о кампаниях в вашем аккаунте. Данное руководство не охватывает подробности создания отчетов .
curl -i -X POST \
https://googleads.googleapis.com/v25/customers/CUSTOMER_ID/googleAds:searchStream \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "login-customer-id: LOGIN_CUSTOMER_ID" \
--data-binary "@query.json"Содержимое файла query.json следующее:
{
"query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}