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

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

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

Предпочтительный способ настройки клиентской библиотеки — инициализировать объект 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. Укажите источник конфигурации в файле 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);

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

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

Ниже приведен список настроек, поддерживаемых библиотекой Google Рекламы .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 Рекламы вам следует установить следующие ключи конфигурации:

  • 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 : задайте для этого значения путь к файлу конфигурации JSON OAuth2.

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

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

  • UseGrpcCore : установите для этого параметра значение true , чтобы использовать библиотеку Grpc.Core в качестве базового транспортного уровня. Дополнительные сведения см. в руководстве по поддержке gRPC .

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

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

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