Configurazione

La libreria client dell'API Google Ads fornisce diverse impostazioni di configurazione che puoi utilizzare per personalizzare il comportamento della libreria.

Configurare la libreria in fase di runtime

Il modo preferito per configurare la libreria client è inizializzare un oggetto GoogleAdsConfig in fase di runtime:

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

GoogleAdsClient client = new GoogleAdsClient(config);

Opzioni di configurazione alternative

Forniamo anche alcune opzioni aggiuntive per configurare la libreria client: per attivarle, aggiungi un riferimento Nuget al Google.Ads.GoogleAds.Extensions pacchetto nel tuo progetto.

Se utilizzi una di queste opzioni, le impostazioni di configurazione non vengono rilevate automaticamente: devi caricarle in modo esplicito come mostrato di seguito.

Utilizzare App.config

Tutte le impostazioni specifiche di Google Ads API sono archiviate nel nodo GoogleAdsApi del file App.config. Una tipica configurazione App.config è la seguente:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="GoogleAdsApi" type="System.Configuration.DictionarySectionHandler"></section>
  </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>

Per caricare le impostazioni di configurazione da un file App.config, chiama il metodo LoadFromDefaultAppConfigSection su un oggetto GoogleAdsConfig:

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

Specificare un file App.config separato

Se non vuoi che il file App.config sia troppo pieno, puoi spostare la configurazione specifica della libreria in un file di configurazione separato utilizzando la configSource proprietà.

Passaggio 1: specifica un configSource in App.config

Modifica il file App.config in modo che sia simile al seguente:

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

Passaggio 2: specifica i contenuti del file di configurazione

Ora crea un altro file di configurazione con il nome specificato in configSource e sposta il nodo di configurazione da App.config a questo file:

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

Passaggio 3: correggi le regole di compilazione in csproj

Infine, includi il nuovo file di configurazione nel progetto. Modifica le proprietà di questo file in Copia sempre nella cartella di output.

Ora crea ed esegui il progetto. L'applicazione inizierà a recuperare i valori dal nuovo file di configurazione.

Utilizzare un file JSON personalizzato

Puoi utilizzare un' IConfigurationRoot istanza per configurare la libreria client.

Creare un file JSON

Crea un file JSON denominato GoogleAdsApi.json con una struttura simile al file App.config.

{
    "Timeout": "2000",

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

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

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

Caricare la configurazione

Poi carica il file JSON in 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);

Utilizzare settings.json

La procedura è simile all'utilizzo di un file JSON personalizzato, tranne per il fatto che le chiavi devono trovarsi in una sezione denominata GoogleAdsApi:

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

Poi puoi utilizzare l'istanza IConfiguration nella pagina:

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

Utilizzare le variabili di ambiente

Puoi anche inizializzare GoogleAdsClient utilizzando le variabili di ambiente:

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

Consulta l'elenco completo delle variabili di ambiente supportate.

Utilizzare uno stream generico

Puoi anche caricare la configurazione, o parti di essa, da uno stream generico, incluso uno criptato:

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);

Campi relativi alla configurazione

Di seguito è riportato l'elenco delle impostazioni supportate dalla libreria .NET di Google Ads.

Impostazioni di connettività

  • Timeout: utilizza questa chiave per impostare il timeout del servizio in millisecondi. Il valore predefinito viene impostato in base all'impostazione method_config/timeout in googleads_grpc_service_config.json. Imposta un valore inferiore se devi applicare un limite più breve al tempo massimo per una chiamata API. Puoi impostare il timeout su 2 ore o più, ma l'API potrebbe comunque andare in timeout per le richieste a esecuzione estremamente lunga e restituire un DEADLINE_EXCEEDED errore.
  • ProxyServer: imposta questo valore sull'URL del server proxy HTTP se utilizzi un proxy per connetterti a internet.
  • ProxyUser: imposta questo valore sul nome utente necessario per l'autenticazione al server proxy. Lascia vuoto questo campo se non è necessario un nome utente.
  • ProxyPassword: imposta questo valore sulla password di ProxyUser se hai impostato un valore per ProxyUser.
  • ProxyDomain: imposta questo valore sul dominio di ProxyUser se il server proxy richiede di impostarne uno.
  • MaxReceiveMessageLengthInBytes: utilizza questa impostazione per aumentare le dimensioni massime della risposta dell'API che la libreria client può gestire. Il valore predefinito è 64 MB.
  • MaxMetadataSizeInBytes: utilizza questa impostazione per aumentare le dimensioni massime della risposta di errore dell'API che la libreria client può gestire. Il valore predefinito è 16 MB.

Modifica le impostazioni MaxReceiveMessageLengthInBytes e MaxMetadataSizeInBytes per correggere determinati errori ResourceExhausted. Queste impostazioni risolvono gli errori del modulo Status(StatusCode="ResourceExhausted",Detail="Received message larger than max (423184132 versus 67108864)".

In questo esempio, l'errore è dovuto al fatto che le dimensioni del messaggio (423184132 bytes) sono maggiori di quelle che la libreria può gestire (67108864 bytes). Aumenta MaxReceiveMessageLengthInBytes a 500000000 per evitare questo errore.

Tieni presente che l'errore indica anche che il codice ha gestito un oggetto Response di dimensioni notevoli (ad esempio un SearchGoogleAdsResponse di grandi dimensioni). Ciò potrebbe avere implicazioni sulle prestazioni del codice a causa dell'heap di oggetti di grandi dimensioni di .NET. Se questo diventa un problema di prestazioni, potresti dover esplorare come riorganizzare le chiamate API o riprogettare parti dell'app.

Impostazioni OAuth2

Quando utilizzi OAuth2 per autorizzare le chiamate ai server dell'API Google Ads, devi impostare le seguenti chiavi di configurazione:

  • AuthorizationMethod: imposta su OAuth2.
  • OAuth2Mode: imposta su APPLICATION o SERVICE_ACCOUNT.
  • OAuth2ClientId: imposta questo valore sull'ID client OAuth2.
  • OAuth2ClientSecret: imposta questo valore sul client secret OAuth2.
  • OAuth2Scope: imposta questo valore su ambiti diversi se vuoi autorizzare i token OAuth2 per più API. Questa impostazione è facoltativa.

Se utilizzi OAuth2Mode == APPLICATION, devi impostare le seguenti chiavi di configurazione aggiuntive.

  • OAuth2RefreshToken: imposta questo valore su un token di aggiornamento OAuth2 pregenerato se vuoi riutilizzare i token OAuth2. Questa impostazione è facoltativa.
  • OAuth2RedirectUri: imposta questo valore sull'URL di reindirizzamento OAuth2. Questa impostazione è facoltativa.

Per maggiori dettagli, consulta le seguenti guide:

Se utilizzi OAuth2Mode == SERVICE_ACCOUNT, devi impostare le seguenti chiavi di configurazione aggiuntive.

  • OAuth2PrnEmail: imposta questo valore sull'indirizzo email dell'account di cui stai eseguendo lo spoofing.
  • OAuth2SecretsJsonPath: imposta questo valore sul percorso del file di configurazione JSON OAuth2.

Per maggiori dettagli, consulta la guida sul flusso del service account OAuth.

Impostazioni di trasporto

  • UseGrpcCore: imposta questa impostazione su true per utilizzare la libreria Grpc.Core come livello di trasporto sottostante. Consulta Utilizzare la libreria Grpc legacy.

Impostazioni dell'API Google Ads

Le seguenti impostazioni sono specifiche dell'API Google Ads.

  • DeveloperToken: imposta questo valore sul tuo token sviluppatore.
  • LoginCustomerId: questo è l'ID cliente del cliente autorizzato da utilizzare nella richiesta, senza trattini (-).
  • LinkedCustomerId: questa intestazione è obbligatoria solo per i metodi che aggiornano le risorse di un'entità quando è autorizzata tramite gli account collegati nell'interfaccia utente di Google Ads (risorsa AccountLink nell'API Google Ads). Imposta questo valore sull'ID cliente del fornitore di dati che aggiorna le risorse dell'ID cliente specificato. Deve essere impostato senza trattini (-). Scopri di più sugli account collegati.