Configuración

La biblioteca cliente de la API de Google Ads proporciona varias opciones de configuración que puedes utilizar para personalizar el comportamiento de la biblioteca.

Cómo configurar la biblioteca durante el tiempo de ejecución

La forma preferida de configurar la biblioteca cliente es inicializar un objeto GoogleAdsConfig en el tiempo de ejecución:

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

GoogleAdsClient client = new GoogleAdsClient(config);

Opciones de configuración alternativas

También proporcionamos algunas opciones adicionales para configurar la biblioteca cliente: para habilitarlas, agrega una referencia de Nuget al paquete Google.Ads.GoogleAds.Extensions en tu proyecto.

Si usas una de estas opciones, los parámetros de configuración no se captan automáticamente, sino que debes cargarlos de manera explícita como se muestra a continuación.

Configurar con App.config

Toda la configuración específica de Google Ads API se almacena en el nodo GoogleAdsApi del archivo App.config. Un App.config de configuración típico es el siguiente:

<?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>

Para cargar parámetros de configuración desde un archivo App.config, llama al método LoadFromDefaultAppConfigSection en un objeto GoogleAdsConfig:

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

Especifica un archivo App.config independiente

Si no quieres que tu App.config esté desordenado, puedes mover la configuración específica de la biblioteca a su propio archivo de configuración mediante la propiedad configSource.

Paso 1: Especifica un configSource en tu app.config

Modifica tu App.config para que se vea de la siguiente manera:

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

Paso 2: Especifica el contenido del archivo de configuración

Ahora, crea otro archivo de configuración con el nombre que especificaste en configSource y mueve el nodo de configuración de tu App.config a este archivo:

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

Paso 3: Corrige las reglas de compilación en tu csproj

Por último, incluye el archivo de configuración nuevo en tu proyecto. Cambia las propiedades de este archivo a Always copy to output folder.

Ahora, compila y ejecuta tu proyecto. Tu aplicación comenzará a recoger valores del nuevo archivo de configuración.

Configuración con un archivo JSON personalizado

Puedes usar una instancia de IConfigurationRoot para configurar la biblioteca cliente.

Crea un archivo JSON

Crea un archivo JSON llamado GoogleAdsApi.json que tenga una estructura similar al archivo App.config.

{
    "Timeout": "2000",

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

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

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

Carga la configuración

Luego, carga el archivo JSON en un 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);

Configuración con settings.json

El proceso es similar a usar un JSON personalizado, con la excepción de que las claves deben estar en una sección llamada GoogleAdsApi:

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

Luego, puedes usar la instancia IConfiguration en tu página:

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

Configuración con variables de entorno

También puedes inicializar GoogleAdsClient con variables de entorno:

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

Consulta la lista completa de variables de entorno compatibles.

Campos de configuración

A continuación, se muestra una lista de la configuración que admite la biblioteca .NET de Google Ads.

Configuración de conectividad

  • Timeout: Usa esta clave para establecer el tiempo de espera del servicio en milisegundos. El valor predeterminado se establece según la configuración de method_config/timeout en googleads_grpc_service_config.json. Establece un valor más bajo si necesitas aplicar un límite más corto al tiempo máximo para una llamada a la API. Puedes configurar el tiempo de espera en 2 horas o más, pero la API aún puede agotar las solicitudes de larga duración y mostrar un error DEADLINE_EXCEEDED.
  • ProxyServer: Establece esto en la URL del servidor proxy HTTP si usas un proxy para conectarte a Internet.
  • ProxyUser: Establece esto como el nombre de usuario que necesitas para autenticar en el servidor proxy. Deja este campo en blanco si no se requiere un nombre de usuario.
  • ProxyPassword: Establece esto en la contraseña de ProxyUser si configuras un valor para ProxyUser.
  • ProxyDomain: Establece esto en el dominio para ProxyUser si tu servidor proxy requiere uno.
  • MaxReceiveMessageLengthInBytes: Usa esta configuración para aumentar el tamaño máximo de la respuesta de la API que la biblioteca cliente puede controlar. El valor predeterminado es 64 MB.
  • MaxMetadataSizeInBytes: Usa esta configuración para aumentar el tamaño máximo de la respuesta de error de la API que la biblioteca cliente puede controlar. El valor predeterminado es 16 MB.

Ajusta la configuración de MaxReceiveMessageLengthInBytes y MaxMetadataSizeInBytes para corregir determinados errores de ResourceExhausted. Esta configuración corrige errores del formato Status(StatusCode="ResourceExhausted",Detail="Received message larger than max (423184132 versus 67108864)".

En este ejemplo, el error se debe a que el tamaño del mensaje (423184132 bytes) es más grande de lo que la biblioteca puede controlar (67108864 bytes). Aumenta MaxReceiveMessageLengthInBytes a 500000000 para evitar este error.

Ten en cuenta que el error también indica que tu código administró un objeto de respuesta significativamente grande (como un SearchGoogleAdsResponse grande). Esto puede afectar el rendimiento del código debido al montón de objetos grandes de .NET. Si esto se convierte en una preocupación relacionada con el rendimiento, es posible que debas explorar la manera de reorganizar las llamadas a la API o rediseñar partes de tu app.

Configuración de OAuth2

Cuando usas OAuth2 para autorizar tus llamadas contra los servidores de la API de Google Ads, debes establecer las siguientes claves de configuración:

  • AuthorizationMethod: Configurado como OAuth2.
  • OAuth2Mode: Se establece en APPLICATION o SERVICE_ACCOUNT.
  • OAuth2ClientId: Establece este valor en tu ID de cliente de OAuth2.
  • OAuth2ClientSecret: Establece este valor en tu secreto de cliente de OAuth2.
  • OAuth2Scope: Establece este valor en alcances diferentes si deseas autorizar tokens de OAuth2 para varias API. Esta configuración es opcional.

Si usas OAuth2Mode == APPLICATION, debes establecer las siguientes claves de configuración adicionales.

  • OAuth2RefreshToken: Establece este valor en un token de actualización de OAuth2 generado si deseas reutilizarlos. Esta configuración es opcional.
  • OAuth2RedirectUri: Establece este valor en la URL de redireccionamiento de OAuth2. Esta configuración es opcional.

Consulta las siguientes guías para obtener más detalles:

Si usas OAuth2Mode == SERVICE_ACCOUNT, debes establecer las siguientes claves de configuración adicionales.

  • OAuth2PrnEmail: Establece este valor en la dirección de correo electrónico de la cuenta que quieres robar la identidad.
  • OAuth2SecretsJsonPath: Establece este valor en la ruta del archivo de configuración JSON de OAuth2.

Consulta la guía del flujo de la cuenta de servicio de OAuth para obtener más detalles.

Configuración de transporte

  • UseGrpcCore: Establece esta configuración en true para usar la biblioteca Grpc.Core como la capa de transporte subyacente. Consulta la guía de asistencia de gRPC para obtener más detalles.

Configuración de la API de Google Ads

La siguiente configuración es específica de la API de Google Ads.

  • DeveloperToken: Establece esto en tu token de desarrollador.
  • LoginCustomerId: Este es el ID de cliente del cliente autorizado que se usará en la solicitud, sin guiones (-).
  • LinkedCustomerId: Este encabezado solo es necesario para los métodos que actualizan los recursos de una entidad cuando se les otorga permiso a través de cuentas vinculadas en la IU de Google Ads (recurso AccountLink en la API de Google Ads). Establece este valor en el ID de cliente del proveedor de datos que actualiza los recursos del ID de cliente especificado. Se debe configurar sin guiones (-). Obtén más información sobre las cuentas vinculadas.