Configuración

La biblioteca cliente de la API de Google Ads proporciona varios parámetros de configuración que puedes usar para personalizar el comportamiento de la biblioteca.

Configura la biblioteca en 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 = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "******.apps.googleusercontent.com",
    OAuth2ClientSecret = "******",
    OAuth2RefreshToken = "******"
};

GoogleAdsClient client = new GoogleAdsClient(config);

Otras opciones de configuración

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, la configuración no se detecta automáticamente. Debes cargarla de forma explícita, como se muestra a continuación.

Configuración con App.config

Todos los parámetros de configuración específicos de Google Ads API se almacenan en el nodo GoogleAdsApi del archivo App.config. Una configuración típica App.config es la 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 la configuración de un archivo App.config, llama al método LoadFromDefaultAppConfigSection en un objeto GoogleAdsConfig:

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

Cómo especificar un archivo App.config independiente

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

Paso 1: Especifica un configSource en tu App.config

Modifica tu archivo 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 de tu 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 nuevo archivo de configuración 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 tomar 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 a la del 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

A continuación, 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 aquí es similar al uso de un JSON personalizado, excepto que las claves deben estar en una sección llamada GoogleAdsApi:

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

A continuación, puedes usar la instancia de 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 admitidas.

Campos de configuración

A continuación, se incluye la lista de parámetros de configuración admitidos por la biblioteca de .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 el parámetro de configuración method_config/timeout en googleads_grpc_service_config.json. Establece un valor más bajo si necesitas aplicar un límite más corto en el tiempo máximo para una llamada a la API. Puedes establecer el tiempo de espera en 2 horas o más, pero es posible que la API aún agote el tiempo de espera de las solicitudes de ejecución extremadamente prolongada y muestre un error DEADLINE_EXCEEDED.
  • ProxyServer: Configura este parámetro en la URL del servidor proxy HTTP si usas un proxy para conectarte a Internet.
  • ProxyUser: Establece este parámetro en el nombre de usuario que necesitas para autenticarte en el servidor proxy. Deja este campo vacío si no se requiere un nombre de usuario.
  • ProxyPassword: Establece este parámetro en la contraseña de ProxyUser si estableciste un valor para ProxyUser.
  • ProxyDomain: Configura este parámetro en el dominio de ProxyUser si tu servidor proxy requiere que se establezca uno.
  • MaxReceiveMessageLengthInBytes: Usa este parámetro de configuración para aumentar el tamaño máximo de la respuesta de la API que puede controlar la biblioteca cliente. El valor predeterminado es 64 MB.
  • MaxMetadataSizeInBytes: Usa este parámetro de configuración para aumentar el tamaño máximo de la respuesta de error de la API que puede controlar la biblioteca cliente. El valor predeterminado es 16 MB.

Ajusta la configuración de MaxReceiveMessageLengthInBytes y MaxMetadataSizeInBytes para corregir ciertos errores de ResourceExhausted. Estos parámetros de configuración abordan 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 mayor de lo que la biblioteca puede controlar (67108864 bytes). Para evitar este error, aumenta MaxReceiveMessageLengthInBytes a 500000000.

Ten en cuenta que el error también indica que tu código controló un objeto Response significativamente grande (como un SearchGoogleAdsResponse grande). Esto podría tener implicaciones en el rendimiento de tu código debido al montículo de objetos grandes de .NET. Si esto se convierte en un problema de rendimiento, es posible que debas explorar cómo reorganizar tus llamadas a la API o rediseñar partes de tu app.

Configuración de OAuth2

Cuando uses OAuth2 para autorizar tus llamadas a 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 OAuth 2.
  • OAuth2ClientSecret: Configura este valor como el secreto de tu cliente de OAuth 2.
  • OAuth2Scope: Establece este valor en diferentes permisos si deseas autorizar tokens de OAuth2 para varias APIs. Este parámetro de configuración es opcional.

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

  • OAuth2RefreshToken: Configura este valor en un token de actualización de OAuth2 generado previamente si deseas reutilizar tokens de OAuth2. Este parámetro de configuración es opcional.
  • OAuth2RedirectUri: Establece este valor en la URL de redireccionamiento de OAuth2. Este parámetro de 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 representas.
  • OAuth2SecretsJsonPath: Establece este valor en la ruta de acceso del archivo de configuración JSON de OAuth2.

Consulta la guía sobre el flujo de cuentas de servicio de OAuth para obtener más detalles.

Configuración de transporte

Configuración de la API de Google Ads

Los siguientes parámetros de configuración son específicos de la API de Google Ads.

  • DeveloperToken: Configura este parámetro con tu token de desarrollador.
  • LoginCustomerId: Es el ID del cliente autorizado para usar en la solicitud, sin guiones (-).
  • LinkedCustomerId: Este encabezado solo es obligatorio para los métodos que actualizan los recursos de una entidad cuando se otorgan permisos a través de las 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.