Рабочий процесс аутентификации нескольких пользователей

В процессе многопользовательской аутентификации вы создаете собственный поток OAuth для аутентификации пользователей. В документации Google Identity рассматриваются различные типы приложений, а также конфигурация проекта Google Cloud Console, необходимая для поддержки каждого типа приложения. Все эти типы приложений поддерживаются API Google Ads. Дополнительные технические детали, которые следует учитывать:

  1. Для доступа к API Google Ads необходимо настроить приложение для аутентификации в следующей области действия:

    https://www.googleapis.com/auth/adwords
    
  2. Вашему приложению может потребоваться выполнять вызовы API от имени пользователя, когда он находится в автономном режиме. Распространенный сценарий — загрузка показателей учетной записи в автономном режиме для создания отчетов и проведения аналитики учетной записи. По этой причине мы рекомендуем запрашивать доступ к учетной записи в автономном режиме через OAuth .

  3. Вам следует пройти процесс проверки приложения OAuth и получить сертификат для своего приложения.

Конфигурация клиентской библиотеки

После авторизации пользователя и получения учетных данных OAuth 2.0 вы можете настроить клиентскую библиотеку, следуя инструкциям на вкладке, соответствующей вашему языку программирования.

Java

Вы можете инициализировать экземпляр GoogleAdsClient во время выполнения, используя учетные данные, полученные от пользователя, к чьим аккаунтам вы обращаетесь с API-запросами.

UserCredentials credentials =
    UserCredentials.newBuilder()
        .setClientId(OAUTH_CLIENT_ID)
        .setClientSecret(OAUTH_CLIENT_SECRET)
        .setRefreshToken(REFRESH_TOKEN)
        .build();

// Creates a GoogleAdsClient with the provided credentials.
GoogleAdsClient client =
    GoogleAdsClient.newBuilder()
        // Sets the developer token which enables API access.
        .setDeveloperToken(DEVELOPER_TOKEN)
        // Sets the OAuth credentials which provide Google Ads account access.
        .setCredentials(credentials)
        // Optional: sets the login customer ID.
        .setLoginCustomerId(Long.valueOf(LOGIN_CUSTOMER_ID))
        .build();
``` See the [configuration guide][java-config-guide] for additional options.

.СЕТЬ

Вы можете инициализировать экземпляр GoogleAdsClient во время выполнения, используя учетные данные, полученные от пользователя, к чьим аккаунтам вы обращаетесь с API-запросами.

GoogleAdsConfig googleAdsConfig = new GoogleAdsConfig()
{
    DeveloperToken = DEVELOPER_TOKEN,
    LoginCustomerId = LOGIN_CUSTOMER_ID,
    OAuth2ClientId = OAUTH_CLIENT_ID,
    OAuth2ClientSecret = OAUTH_CLIENT_SECRET,
    OAuth2RefreshToken = REFRESH_TOKEN,
};

GoogleAdsClient googleAdsClient = new GoogleAdsClient(googleAdsConfig);

Дополнительные параметры см. в руководстве по настройке .

Python

Вы можете инициализировать экземпляр GoogleAdsClient во время выполнения, используя учетные данные, полученные от пользователя, к чьим аккаунтам вы обращаетесь с API-запросами.

from google.ads.googleads.client import GoogleAdsClient

credentials = {
    "developer_token": "INSERT_DEVELOPER_TOKEN_HERE",
    "login_customer_id": "INSERT_LOGIN_CUSTOMER_ID_HERE",
    "refresh_token": "REFRESH_TOKEN",
    "client_id": "OAUTH_CLIENT_ID",
    "client_secret": "OAUTH_CLIENT_SECRET"}

client = GoogleAdsClient.load_from_dict(credentials)

Дополнительные параметры см. в руководстве по настройке .

PHP

Вы можете инициализировать экземпляр GoogleAdsClient во время выполнения, используя учетные данные, полученные от пользователя, к чьим аккаунтам вы обращаетесь с API-запросами.

$oAuth2Credential = (new OAuth2TokenBuilder())
->withClientId('INSERT_CLIENT_ID_HERE')
->withClientSecret('INSERT_CLIENT_SECRET_HERE')
->withRefreshToken('INSERT_REFRESH_TOKEN_HERE')
->build();

$googleAdsClient = (new GoogleAdsClientBuilder())
    ->withOAuth2Credential($oAuth2Credential)
    ->withDeveloperToken('INSERT_DEVELOPER_TOKEN_HERE')
    ->withLoginCustomerId('INSERT_LOGIN_CUSTOMER_ID_HERE')
    ->build();

Дополнительные параметры см. в руководстве по настройке .

Руби

Вы можете инициализировать экземпляр GoogleAdsClient во время выполнения, используя учетные данные, полученные от пользователя, к чьим аккаунтам вы обращаетесь с API-запросами.

  client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
    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'
    config.developer_token = 'INSERT_DEVELOPER_TOKEN_HERE'
  end

Дополнительные параметры см. в руководстве по настройке .

Perl

Вы можете инициализировать экземпляр GoogleAdsClient во время выполнения, используя учетные данные, полученные от пользователя, к чьим аккаунтам вы обращаетесь с API-запросами.

my $api_client = Google::Ads::GoogleAds::Client->new({
  developer_token   => "INSERT_DEVELOPER_TOKEN_HERE",
  login_customer_id => "INSERT_LOGIN_CUSTOMER_ID_HERE"
});

my $oauth2_applications_handler = $api_client->get_oauth2_applications_handler();
$oauth2_applications_handler->set_client_id("INSERT_CLIENT_ID");
$oauth2_applications_handler->set_client_secret("INSERT_CLIENT_SECRET");
$oauth2_applications_handler->set_refresh_token("INSERT_REFRESH_TOKEN");

Дополнительные параметры см. в руководстве по настройке .

локон

Для начала воспользуйтесь 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://www.googleapis.com/oauth2/v3/token

Теперь вы можете использовать токен доступа в своих API-запросах. В следующем примере показано, как создать отчет по кампании, используя метод GoogleAdsService.SearchStream для получения информации о кампаниях в вашем аккаунте. Данное руководство не охватывает подробности создания отчетов .

curl -i -X POST https://googleads.googleapis.com/v24/customers/CUSTOMER_ID/googleAds:searchStream \
   -H "Content-Type: application/json" \
   -H "Authorization: Bearer ACCESS_TOKEN" \
   -H "developer-token: DEVELOPER_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"
}