В этом случае вы создаете собственный процесс OAuth для аутентификации пользователей. В документации по Google Identity описаны различные типы приложений и настройки проекта Google API Console, необходимые для поддержки каждого из них. Все эти типы приложений поддерживаются Google Ads API. Дополнительные технические детали, которые следует иметь в виду:
Настройте приложение так, чтобы оно запрашивало следующую область действия OAuth 2.0:
https://www.googleapis.com/auth/adwordsВашему приложению может потребоваться совершать вызовы API от имени пользователя, когда он не в сети. Чаще всего показатели аккаунта скачивают для создания отчетов и анализа. Поэтому мы рекомендуем запрашивать офлайн-доступ OAuth.
Пройдите процедуру проверки приложения OAuth.
Обзор рабочего процесса
Чтобы реализовать рабочий процесс добавления пользователей, выполните три основных шага:
- Направьте пользователей на окно запроса доступа OAuth. Перенаправьте каждого пользователя на конечную точку авторизации OAuth 2.0 Google, запрашивающую область действия
https://www.googleapis.com/auth/adwordsи офлайн-доступ. Чтобы завершить процесс авторизации и создать токен обновления, пользователям необходимо пройти аутентификацию с помощью ключа доступа. - Обменяйте код авторизации на токены. После того как пользователь предоставит разрешение, получите возвращенный код авторизации и обменяйте его на токен доступа и токен обновления.
- Храните токены и инициализируйте клиент во время выполнения. Надежно храните токен обновления каждого пользователя в хранилище данных и передавайте учетные данные пользователя при инициализации экземпляра
GoogleAdsClientво время выполнения.
Настройка клиентской библиотеки
После авторизации пользователя и получения учетных данных OAuth 2.0 вы можете настроить клиентскую библиотеку, следуя инструкциям на вкладке, соответствующей вашему языку программирования.
Java
Вы можете инициализировать экземпляр GoogleAdsClient во время выполнения, используя учетные данные, полученные от пользователя, к аккаунтам которого вы выполняете вызовы API.
UserCredentials credentials =
UserCredentials.newBuilder()
.setClientId("INSERT_OAUTH2_CLIENT_ID_HERE")
.setClientSecret("INSERT_OAUTH2_CLIENT_SECRET_HERE")
.setRefreshToken("INSERT_OAUTH2_REFRESH_TOKEN_HERE")
.build();
// Creates a GoogleAdsClient with the provided credentials.
GoogleAdsClient client =
GoogleAdsClient.newBuilder()
// Sets the OAuth credentials which provide Google Ads account
// access.
.setCredentials(credentials)
// Optional: sets the login customer ID.
.setLoginCustomerId(Long.valueOf("INSERT_LOGIN_CUSTOMER_ID_HERE"))
.build();
Дополнительные параметры приведены в руководстве по настройке.
.NET
Вы можете инициализировать экземпляр GoogleAdsClient во время выполнения, используя учетные данные, полученные от пользователя, к аккаунтам которого вы выполняете вызовы API.
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
Вы можете инициализировать экземпляр GoogleAdsClient во время выполнения, используя учетные данные, полученные от пользователя, к аккаунтам которого вы выполняете вызовы API.
from google.ads.googleads.client import GoogleAdsClient
credentials = {
"login_customer_id": "INSERT_LOGIN_CUSTOMER_ID_HERE",
"refresh_token": "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
"client_id": "INSERT_OAUTH2_CLIENT_ID_HERE",
"client_secret": "INSERT_OAUTH2_CLIENT_SECRET_HERE",
"use_proto_plus": True,
}
client = GoogleAdsClient.load_from_dict(credentials)
Дополнительные параметры приведены в руководстве по настройке.
PHP
Вы можете инициализировать экземпляр GoogleAdsClient во время выполнения, используя учетные данные, полученные от пользователя, к аккаунтам которого вы выполняете вызовы API.
$oAuth2Credential = (new OAuth2TokenBuilder())
->withClientId('INSERT_OAUTH2_CLIENT_ID_HERE')
->withClientSecret('INSERT_OAUTH2_CLIENT_SECRET_HERE')
->withRefreshToken('INSERT_OAUTH2_REFRESH_TOKEN_HERE')
->build();
$googleAdsClient = (new GoogleAdsClientBuilder())
->withOAuth2Credential($oAuth2Credential)
->withLoginCustomerId('INSERT_LOGIN_CUSTOMER_ID_HERE')
->build();
Дополнительные параметры приведены в руководстве по настройке.
Ruby
Вы можете инициализировать экземпляр GoogleAdsClient во время выполнения, используя учетные данные, полученные от пользователя, к аккаунтам которого вы выполняете вызовы API.
client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
config.client_id = 'INSERT_OAUTH2_CLIENT_ID_HERE'
config.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
config.refresh_token = 'INSERT_OAUTH2_REFRESH_TOKEN_HERE'
config.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end
Дополнительные параметры приведены в руководстве по настройке.
Perl
Вы можете инициализировать экземпляр GoogleAdsClient во время выполнения, используя учетные данные, полученные от пользователя, к аккаунтам которого вы выполняете вызовы API.
my $api_client = Google::Ads::GoogleAds::Client->new({
login_customer_id => "INSERT_LOGIN_CUSTOMER_ID_HERE"
});
my $oauth2_handler = $api_client->get_oauth2_applications_handler();
$oauth2_handler->set_client_id("INSERT_OAUTH2_CLIENT_ID_HERE");
$oauth2_handler->set_client_secret("INSERT_OAUTH2_CLIENT_SECRET_HERE");
$oauth2_handler->set_refresh_token("INSERT_OAUTH2_REFRESH_TOKEN_HERE");
Дополнительные параметры приведены в руководстве по настройке.
curl
Сначала получите токен доступа OAuth 2.0 с помощью HTTP-клиента. В этом руководстве используется команда 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/v26/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"
}