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()
{
OAuth2Mode = OAuth2Flow.APPLICATION,
OAuth2ClientId = "INSERT_CLIENT_ID.apps.googleusercontent.com",
OAuth2ClientSecret = "INSERT_CLIENT_SECRET",
OAuth2RefreshToken = "INSERT_REFRESH_TOKEN"
};
GoogleAdsClient client = new GoogleAdsClient(config);
Otras opciones de configuración
La biblioteca también proporciona opciones adicionales para cargar los parámetros de configuración. Para
habilitarlos, agrega una referencia de NuGet al
Google.Ads.GoogleAds.Extensions paquete en tu proyecto.
Si usas una de estas opciones, los parámetros de configuración no se seleccionan automáticamente. Debes cargarlos de forma explícita como se muestra en las siguientes secciones. Asegúrate de controlar las excepciones de E/S de archivos (como FileNotFoundException o UnauthorizedAccessException) cuando cargues parámetros de configuración desde archivos o transmisiones externos.
Usa App.config
Todos los parámetros de configuración específicos de la API de Google Ads se almacenan en el nodo GoogleAdsApi del archivo App.config. Una configuración App.config típica 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="" />
<!-- OAuth2 settings -->
<add key="OAuth2Mode" value="APPLICATION" />
<add key="OAuth2ClientId"
value="INSERT_CLIENT_ID.apps.googleusercontent.com" />
<add key="OAuth2ClientSecret" value="INSERT_CLIENT_SECRET" />
<add key="OAuth2RefreshToken" value="INSERT_REFRESH_TOKEN" />
</GoogleAdsApi>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
Para cargar los 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 de configuración de aplicación 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 con la
configSource propiedad:
Especifica un
configSourceen tuApp.config. Modifica tuApp.configpara hacer referencia a un archivo de configuración externo:<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="GoogleAdsApi" type="System.Configuration.DictionarySectionHandler" /> </configSections> <GoogleAdsApi configSource="GoogleAdsApi.config" /> </configuration>Especifica el contenido de tu archivo de configuración. Crea otro archivo de configuración con el nombre que especificaste en
configSource(GoogleAdsApi.config), y mueve el nodo de configuraciónGoogleAdsApide tuApp.configa este archivo:<?xml version="1.0" encoding="utf-8" ?> <GoogleAdsApi> <!-- More settings. --> </GoogleAdsApi>Actualiza las reglas de compilación en tu
.csproj. Incluye el nuevo archivo de configuración en tu proyecto y establece su propiedad Copiar al directorio de salida en Copiar siempre. Vuelve a compilar y ejecutar tu proyecto para que tu aplicación tome valores del nuevo archivo de configuración.
Usa un archivo JSON personalizado
Puedes usar una IConfigurationRoot instancia 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": "",
"OAuth2Mode": "APPLICATION",
"OAuth2ClientId": "INSERT_CLIENT_ID.apps.googleusercontent.com",
"OAuth2ClientSecret": "INSERT_CLIENT_SECRET",
"OAuth2RefreshToken": "INSERT_REFRESH_TOKEN"
}
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);
Usa settings.json
El proceso aquí es similar al uso de un archivo JSON personalizado, excepto que las claves deben estar dentro de una sección llamada GoogleAdsApi:
{
"GoogleAdsApi": {
"OAuth2Mode": "APPLICATION",
"OAuth2ClientId": "INSERT_CLIENT_ID.apps.googleusercontent.com",
"OAuth2ClientSecret": "INSERT_CLIENT_SECRET",
"OAuth2RefreshToken": "INSERT_REFRESH_TOKEN"
}
}
A continuación, extrae la sección GoogleAdsApi de la instancia IConfiguration de tu aplicación (por ejemplo, insertada por ASP.NET Core o compilada con ConfigurationBuilder):
IConfigurationSection section = configuration.GetSection("GoogleAdsApi");
GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromConfigurationSection(section);
GoogleAdsClient client = new GoogleAdsClient(config);
Como alternativa, puedes cargar un archivo settings.json directamente por ruta de acceso con
config.LoadFromSettingsJson(filePath, "GoogleAdsApi") o desde la variable de entorno
GOOGLE_ADS_CONFIGURATION_FILE_PATH
(EnvironmentVariableNames.CONFIG_FILE_PATH) con
config.TryLoadFromEnvironmentFilePath.
Usa 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.
Usa una transmisión genérica
También puedes cargar la configuración, o partes de ella, desde una transmisión genérica, incluida una encriptada:
GoogleAdsConfig config = new GoogleAdsConfig()
{
// Set some configuration properties in code.
OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
};
// Load your encrypted data from a file and dispose of the streams properly.
using (CryptoStream strm = GetEncryptedCredentialsStream())
using (StreamReader rdr = new StreamReader(strm))
{
// Configure the OAuth credentials from the encrypted stream.
config.LoadOAuth2SecretsFromStream(rdr);
}
GoogleAdsClient client = new GoogleAdsClient(config);
Campos de configuración
En las siguientes secciones, se enumeran los parámetros de configuración admitidos por 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 elmethod_config/timeoutparámetro de configuración engoogleads_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 muy prolongada y muestre un errorDEADLINE_EXCEEDED.ProxyServer: Establece 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. Déjalo vacío si no se requiere un nombre de usuario.ProxyPassword: Establece este parámetro en la contraseña deProxyUsersi estableces un valor paraProxyUser.ProxyDomain: Establece este parámetro en el dominio deProxyUsersi 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 de 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 de 16 MB.
Ajusta los parámetros de configuración MaxReceiveMessageLengthInBytes y MaxMetadataSizeInBytes para corregir ciertos errores ResourceExhausted. Estos parámetros de configuración abordan errores del siguiente formulario:
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 que lo que puede controlar la biblioteca (67108864 bytes). Aumenta MaxReceiveMessageLengthInBytes a 500000000 para evitar este error. Ten en cuenta
que el error también indica que tu código controló un objeto de respuesta significativamente grande (como un SearchGoogleAdsResponse grande).
Esto podría tener implicaciones en el rendimiento de tu código debido al
montón 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 OAuth 2.0 para autorizar tus llamadas a los servidores de la API de Google Ads, debes establecer las siguientes claves de configuración:
AuthorizationMethod: Configurado comoOAuth2.OAuth2Mode: Configurado comoAPPLICATIONoSERVICE_ACCOUNT.OAuth2ClientId: Establece este valor en tu ID de cliente de OAuth 2.0.OAuth2ClientSecret: Establece este valor en tu secreto de cliente de OAuth 2.0.OAuth2Scope: Establece este valor en diferentes alcances si deseas autorizar tokens de OAuth 2.0 para varias APIs. Este parámetro de configuración es opcionalUseApplicationDefaultCredentials: Establece este valor entruepara autenticarte con las credenciales predeterminadas de la aplicación (compatibles conGoogle.Ads.GoogleAdsv24.1.0y versiones posteriores;config.LoadFromEnvironmentVariables()lee la variable de entornoUSE_APPLICATION_DEFAULT_CREDENTIALSsin prefijo).Credentials: (Solo tiempo de ejecución, compatible conv27.0.0y versiones posteriores) Inserta una instanciaICredentialoGoogleCredentialpreconstruida directamente enGoogleAdsConfigen el tiempo de ejecución.
Si usas OAuth2Mode == APPLICATION, debes establecer las siguientes claves de configuración adicionales:
OAuth2RefreshToken: Establece este valor en un token de actualización de OAuth 2.0 generado previamente si deseas volver a usar tokens de OAuth 2.0. Este parámetro de configuración es opcionalOAuth2RedirectUri: Establece este valor en la URL de redireccionamiento de OAuth 2.0. 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:
OAuth2SecretsJsonPath: Establece este valor en la ruta de acceso al archivo de claves JSON de OAuth 2.0.OAuth2PrnEmail: Establece este valor en la dirección de correo electrónico de la cuenta que suplantas cuando usas la delegación en todo el dominio de Google Workspace. Este parámetro de configuración es opcional
Consulta la guía de flujo de la cuenta de servicio de OAuth para obtener más detalles.
Configuración de transporte
UseGrpcCore: Establece este parámetro de configuración entruepara usar la bibliotecaGrpc.Corecomo la capa de transporte subyacente. Consulta Usa la bibliotecaGrpc.Core.
Configuración de la API de Google Ads
Los siguientes parámetros de configuración son específicos de la API de Google Ads:
LoginCustomerId: Es el ID de cliente del cliente autorizado para 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 otorgan permisos a través de Cuentas vinculadas en la IU de Google Ads (recursoAccountLinken 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 establecer sin guiones (-). Obtén más información sobre las Cuentas vinculadas.