Конфигурация

Клиентская библиотека API Google Ads предоставляет несколько параметров конфигурации, которые можно использовать для настройки поведения библиотеки.

Настройте библиотеку во время выполнения

Предпочтительным способом настройки клиентской библиотеки является инициализация объекта GoogleAdsConfig во время выполнения:

GoogleAdsConfig config = new GoogleAdsConfig()
{
    DeveloperToken = "******",
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "******.apps.googleusercontent.com",
    OAuth2ClientSecret = "******",
    OAuth2RefreshToken = "******"
};

GoogleAdsClient client = new GoogleAdsClient(config);

Альтернативные варианты конфигурации

Мы также предоставляем некоторые дополнительные возможности настройки клиентской библиотеки: чтобы включить их, добавьте ссылку Nuget на пакет Google.Ads.GoogleAds.Extensions в вашем проекте.

Если вы используете один из этих вариантов, параметры конфигурации не будут загружены автоматически: вам следует явно загрузить их, как показано ниже.

Использовать App.config

Все настройки, специфичные для Google Ads API , хранятся в узле GoogleAdsApi файла App.config . Типичная конфигурация App.config выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="GoogleAdsApi" type="System.Configuration.DictionarySectionHandler" />
  </configSections>
  <GoogleAdsApi>
    <!-- Set the service timeout in milliseconds. -->
    <add key="Timeout" value="2000" />

    <!-- Proxy settings for library. -->
    <add key="ProxyServer" value="http://localhost:8888"/>
    <add key="ProxyUser" value=""/>
    <add key="ProxyPassword" value=""/>
    <add key="ProxyDomain" value=""/>

    <!-- API-specific settings -->
    <add key="DeveloperToken" value="******"/>

    <!-- OAuth2 settings -->
    <add key = "OAuth2Mode" value="APPLICATION"/>
    <add key = "OAuth2ClientId" value = "******.apps.googleusercontent.com" />
    <add key = "OAuth2ClientSecret" value = "******" />
    <add key = "OAuth2RefreshToken" value = "******" />
  </GoogleAdsApi>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
  </startup>
</configuration>

Чтобы загрузить параметры конфигурации из файла App.config , вызовите метод LoadFromDefaultAppConfigSection объекта GoogleAdsConfig :

GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromDefaultAppConfigSection();
GoogleAdsClient client = new GoogleAdsClient(config);

Укажите отдельный файл App.config

Если вы не хотите загромождать файл App.config , вы можете переместить конфигурацию, специфичную для библиотеки, в ее собственный файл конфигурации с помощью свойства configSource .

Шаг 1: Укажите configSource в вашем App.config

Измените ваш App.config так, чтобы он выглядел следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="GoogleAdsApi" type="System.Configuration.DictionarySectionHandler"/>
  </configSections>
  <GoogleAdsApi configSource="GoogleAdsApi.config"/>
...
</configuration>

Шаг 2: Укажите содержимое вашего конфигурационного файла.

Теперь создайте еще один файл конфигурации с именем, которое вы указали в configSource , и переместите узел конфигурации из вашего App.config в этот файл:

<?xml version="1.0" encoding="utf-8" ?>
<GoogleAdsApi>
  ... More settings.
</GoogleAdsApi>

Шаг 3: Исправьте правила сборки в вашем csproj

Наконец, включите новый файл конфигурации в свой проект. Измените его свойства на «Всегда копировать в выходную папку» .

Теперь соберите и запустите свой проект. Ваше приложение начнёт использовать значения из нового файла конфигурации.

Использовать пользовательский JSON-файл

Для настройки клиентской библиотеки можно использовать экземпляр IConfigurationRoot .

Создать JSON-файл

Создайте JSON-файл с именем GoogleAdsApi.json , имеющий структуру, аналогичную файлу App.config .

{
    "Timeout": "2000",

    "ProxyServer": "http://localhost:8888",
    "ProxyUser": "",
    "ProxyPassword": "",
    "ProxyDomain": "",

    "DeveloperToken": "******",

    "OAuth2Mode": "APPLICATION",
    "OAuth2ClientId": "******.apps.googleusercontent.com",
    "OAuth2ClientSecret": "******",
    "OAuth2RefreshToken": "******",
}

Загрузить конфигурацию

Затем загрузите JSON-файл в IConfigurationRoot .

ConfigurationBuilder builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("GoogleAdsApi.json");
IConfigurationRoot configRoot = builder.Build();

GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromConfigurationRoot(configRoot);
GoogleAdsClient client = new GoogleAdsClient(config);

Использовать settings.json

Процесс здесь аналогичен использованию пользовательского JSON, за исключением того, что ключи должны находиться в разделе с именем GoogleAdsApi :

{
    "GoogleAdsApi":
    {
        "DeveloperToken": "******",
        "OAuth2Mode": "APPLICATION",
        "OAuth2ClientId": "******.apps.googleusercontent.com",
        "OAuth2ClientSecret": "******",
        "OAuth2RefreshToken": "******",
        ...
    }
    // More settings...
}

Далее вы можете использовать экземпляр IConfiguration на своей странице:

IConfigurationSection section = Configuration.GetSection("GoogleAdsApi");
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromConfigurationSection(section);
GoogleAdsClient client = new GoogleAdsClient(config);

Использовать переменные среды

Вы также можете инициализировать GoogleAdsClient , используя переменные среды:

GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromEnvironmentVariables();
GoogleAdsClient client = new GoogleAdsClient(config);

Полный список поддерживаемых переменных среды см.

Использовать общий поток

Вы также можете загрузить конфигурацию или ее части из общего потока, включая зашифрованный:

GoogleAdsConfig config = new GoogleAdsConfig()
{
  //Set some configuration properties in code.
  DeveloperToken = "******",
  OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
};

// Load your encrypted data from a file.

CryptoStream strm = ....

StreamReader rdr = new StreamReader(strm);
// Configure the OAuth credentials from the encrypted file.
config.LoadOAuth2SecretsFromStream(rdr);

GoogleAdsClient client = new GoogleAdsClient(config);

Поля конфигурации

Ниже приведен список настроек, поддерживаемых библиотекой Google Ads .NET.

Настройки подключения

  • Timeout : Используйте этот ключ для установки времени ожидания службы в миллисекундах. Значение по умолчанию устанавливается на основе параметра method_config/timeout в файле googleads_grpc_service_config.json . Задайте меньшее значение, если вам нужно ограничить максимальное время вызова API. Вы можете установить время ожидания 2 часа и более, но API всё равно может прервать выполнение очень длительных запросов и вернуть ошибку DEADLINE_EXCEEDED .
  • ProxyServer : задайте URL-адрес прокси-сервера HTTP, если вы используете прокси-сервер для подключения к Интернету.
  • ProxyUser : укажите имя пользователя, необходимое для аутентификации на прокси-сервере. Оставьте это поле пустым, если имя пользователя не требуется.
  • ProxyPassword : Установите это значение на пароль ProxyUser , если вы задали значение для ProxyUser .
  • ProxyDomain : укажите домен для ProxyUser , если ваш прокси-сервер требует его настройки.
  • MaxReceiveMessageLengthInBytes : используйте этот параметр, чтобы увеличить максимальный размер ответа API, который может обработать клиентская библиотека. Значение по умолчанию — 64 МБ.
  • MaxMetadataSizeInBytes : используйте этот параметр, чтобы увеличить максимальный размер ответа об ошибке API, который может обработать клиентская библиотека. Значение по умолчанию — 16 МБ.

Измените настройки MaxReceiveMessageLengthInBytes и MaxMetadataSizeInBytes , чтобы исправить некоторые ошибки ResourceExhausted . Эти настройки устраняют ошибки вида Status(StatusCode="ResourceExhausted",Detail="Received message larger than max (423184132 versus 67108864)" .

В этом примере ошибка возникает из-за того, что размер сообщения ( 423184132 bytes ) превышает возможности библиотеки ( 67108864 bytes ). Чтобы избежать этой ошибки, увеличьте значение MaxReceiveMessageLengthInBytes до 500000000 .

Обратите внимание, что эта ошибка также указывает на то, что ваш код обработал довольно большой объект Response (например, большой SearchGoogleAdsResponse ). Это может повлиять на производительность вашего кода из-за кучи больших объектов .NET. Если это станет проблемой для производительности, вам, возможно, придётся изучить способы реорганизации вызовов API или перепроектировать части вашего приложения.

Настройки OAuth2

При использовании OAuth2 для авторизации вызовов на серверах API Google Ads необходимо установить следующие ключи конфигурации:

  • AuthorizationMethod : установите значение OAuth2 .
  • OAuth2Mode : установите значение APPLICATION или SERVICE_ACCOUNT .
  • OAuth2ClientId : задайте это значение для вашего идентификатора клиента OAuth2.
  • OAuth2ClientSecret : задайте это значение секретному ключу вашего клиента OAuth2.
  • OAuth2Scope : задайте для этого значения разные области действия, если вы хотите авторизовать токены OAuth2 для нескольких API. Этот параметр необязателен.

Если вы используете OAuth2Mode == APPLICATION , то вам необходимо установить следующие дополнительные ключи конфигурации.

  • OAuth2RefreshToken : задайте значение заранее сгенерированного токена обновления OAuth2, если вы хотите повторно использовать токены OAuth2. Этот параметр необязателен.
  • OAuth2RedirectUri : задайте это значение как URL-адрес перенаправления OAuth2. Этот параметр необязателен.

Более подробную информацию смотрите в следующих руководствах:

Если вы используете OAuth2Mode == SERVICE_ACCOUNT , то вам необходимо установить следующие дополнительные ключи конфигурации.

  • OAuth2PrnEmail : задайте в качестве этого значения адрес электронной почты учетной записи, которую вы выдаете.
  • OAuth2SecretsJsonPath : задайте в этом значении путь к файлу конфигурации OAuth2 JSON.

Более подробную информацию см. в руководстве по работе с учетной записью службы OAuth .

Настройки транспорта

Настройки API Google Рекламы

Следующие настройки относятся только к API Google Ads.

  • DeveloperToken : установите здесь свой токен разработчика.
  • LoginCustomerId : это идентификатор авторизованного клиента, который будет использоваться в запросе, без дефисов ( - ).
  • LinkedCustomerId : этот заголовок требуется только для методов, которые обновляют ресурсы сущности при наличии разрешения через Linked Accounts в пользовательском интерфейсе Google Ads (ресурс AccountLink в API Google Ads). Задайте в качестве этого значения идентификатор клиента поставщика данных, который обновляет ресурсы указанного идентификатора клиента. Значение следует указывать без дефисов ( - ). Подробнее о Linked Accounts .