Konfiguration

Die Google Ads API-Clientbibliothek bietet mehrere Konfigurationseinstellungen, mit denen Sie das Verhalten der Bibliothek anpassen können.

Bibliothek zur Laufzeit konfigurieren

Die bevorzugte Methode zum Konfigurieren der Clientbibliothek ist die Initialisierung eines GoogleAdsConfig-Objekts zur Laufzeit:

using Google.Ads.Gax.Config;
using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Lib;

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.APPLICATION,
    OAuth2ClientId = "INSERT_CLIENT_ID.apps.googleusercontent.com",
    OAuth2ClientSecret = "INSERT_CLIENT_SECRET",
    OAuth2RefreshToken = "INSERT_REFRESH_TOKEN",
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
};

GoogleAdsClient client = new GoogleAdsClient(config);

Alternative Konfigurationsoptionen

Die Bibliothek bietet außerdem zusätzliche Optionen zum Laden von Konfigurationseinstellungen aus appsettings.json, benutzerdefinierten JSON-Dateien, Umgebungsvariablen oder App.config. Installieren Sie das NuGet-Paket Google.Ads.GoogleAds.Extensions in Ihrem Projekt, um sie zu aktivieren:

dotnet add package Google.Ads.GoogleAds.Extensions

Wenn Sie eine dieser Optionen verwenden, werden die Konfigurationseinstellungen nicht automatisch übernommen. Sie müssen sie explizit laden, wie in den folgenden Abschnitten beschrieben. Achten Sie darauf, Datei-E/A-Ausnahmen wie FileNotFoundException oder UnauthorizedAccessException zu behandeln, wenn Sie Einstellungen aus externen Dateien oder Streams laden.

„appsettings.json“ oder „settings.json“ verwenden

In .NET 8.0- und ASP.NET Core-Anwendungen platzieren Sie Ihre Konfigurationsschlüssel in einem GoogleAdsApi-Abschnitt in appsettings.json (oder settings.json):

{
  "GoogleAdsApi": {
    "LoginCustomerId": "INSERT_LOGIN_CUSTOMER_ID_HERE",
    "OAuth2Mode": "APPLICATION",
    "OAuth2ClientId": "INSERT_CLIENT_ID.apps.googleusercontent.com",
    "OAuth2ClientSecret": "INSERT_CLIENT_SECRET",
    "OAuth2RefreshToken": "INSERT_REFRESH_TOKEN"
  }
}

Extrahieren Sie als Nächstes den Abschnitt GoogleAdsApi aus der IConfiguration-Instanz Ihrer Anwendung (z. B. von ASP.NET Core eingefügt oder mit ConfigurationBuilder erstellt) und laden Sie ihn mit LoadFromConfigurationSection:

using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Extensions.Config;
using Google.Ads.GoogleAds.Lib;
using Microsoft.Extensions.Configuration;

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

Alternativ können Sie eine appsettings.json- oder settings.json-Datei direkt über den Pfad mit LoadFromSettingsJson laden:

using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Extensions.Config;
using Google.Ads.GoogleAds.Lib;

GoogleAdsConfig config = new GoogleAdsConfig();
config.LoadFromSettingsJson("appsettings.json", "GoogleAdsApi");
GoogleAdsClient client = new GoogleAdsClient(config);

Sie können den Pfad auch aus der Umgebungsvariablen GOOGLE_ADS_CONFIGURATION_FILE_PATH (EnvironmentVariableNames.CONFIG_FILE_PATH) laden, indem Sie config.TryLoadFromEnvironmentFilePath aufrufen.

Benutzerdefinierte JSON-Datei verwenden

Sie können auch eine IConfigurationRoot-Instanz verwenden, um eine flache JSON-Datei ohne einen GoogleAdsApi-Abschnitt auf oberster Ebene zu laden.

JSON-Datei erstellen

Erstellen Sie eine JSON-Datei mit dem Namen GoogleAdsApi.json, in der die Konfigurationsschlüssel auf Stammebene definiert sind:

{
  "Timeout": "2000",
  "ProxyServer": "http://localhost:8888",
  "ProxyUser": "",
  "ProxyPassword": "",
  "ProxyDomain": "",
  "LoginCustomerId": "INSERT_LOGIN_CUSTOMER_ID_HERE",
  "OAuth2Mode": "APPLICATION",
  "OAuth2ClientId": "INSERT_CLIENT_ID.apps.googleusercontent.com",
  "OAuth2ClientSecret": "INSERT_CLIENT_SECRET",
  "OAuth2RefreshToken": "INSERT_REFRESH_TOKEN"
}

Konfiguration laden

Laden Sie als Nächstes die JSON-Datei in ein IConfigurationRoot:

using System.IO;
using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Extensions.Config;
using Google.Ads.GoogleAds.Lib;
using Microsoft.Extensions.Configuration;

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

Umgebungsvariablen verwenden

Sie können GoogleAdsClient auch mit Umgebungsvariablen initialisieren:

using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Extensions.Config;
using Google.Ads.GoogleAds.Lib;

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

Vollständige Liste der unterstützten Umgebungsvariablen

App.config verwenden

In .NET Framework-Anwendungen werden alle Google Ads API-spezifischen Einstellungen im Knoten GoogleAdsApi der Datei App.config gespeichert. Eine typische Konfiguration App.config sieht so aus:

<?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="" />

    <!-- Google Ads API settings. -->
    <add key="LoginCustomerId" value="INSERT_LOGIN_CUSTOMER_ID_HERE" />

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

Wenn Sie Konfigurationseinstellungen aus einer App.config-Datei laden möchten, rufen Sie die Methode LoadFromDefaultAppConfigSection für ein GoogleAdsConfig-Objekt auf:

using Google.Ads.GoogleAds.Config;
using Google.Ads.GoogleAds.Extensions.Config;
using Google.Ads.GoogleAds.Lib;

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

Separate App.config-Datei angeben

Wenn Sie Ihre App.config-Datei nicht überladen möchten, können Sie die bibliotheksspezifische Konfiguration mit dem Attribut configSource in eine eigene Konfigurationsdatei verschieben:

  1. Geben Sie in der App.config einen configSource an. Ändern Sie Ihre App.config, um auf eine externe Konfigurationsdatei zu verweisen:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="GoogleAdsApi"
                 type="System.Configuration.DictionarySectionHandler" />
      </configSections>
      <GoogleAdsApi configSource="GoogleAdsApi.config" />
    </configuration>
    
  2. Geben Sie den Inhalt der Konfigurationsdatei an. Erstellen Sie eine weitere Konfigurationsdatei mit dem Namen, den Sie in configSource (GoogleAdsApi.config) angegeben haben, und verschieben Sie den Konfigurationsknoten GoogleAdsApi aus Ihrer App.config in diese Datei:

    <?xml version="1.0" encoding="utf-8" ?>
    <GoogleAdsApi>
      <!-- More settings. -->
    </GoogleAdsApi>
    
  3. Aktualisieren Sie die Build-Regeln in Ihrer .csproj. Fügen Sie die neue Konfigurationsdatei in Ihr Projekt ein und legen Sie für das Attribut In Ausgabeverzeichnis kopieren den Wert Immer kopieren fest. Erstellen Sie Ihr Projekt neu und führen Sie es aus, damit Ihre Anwendung Werte aus der neuen Konfigurationsdatei übernimmt.

Generischen Stream verwenden

Sie können die Konfiguration oder Teile davon auch aus einem generischen Stream laden, einschließlich eines verschlüsselten Streams:

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

Konfigurationsfelder

In den folgenden Abschnitten sind die Einstellungen aufgeführt, die von der Google Ads .NET-Bibliothek unterstützt werden.

Konnektivitätseinstellungen

  • Timeout: Verwenden Sie diesen Schlüssel, um das Dienstzeitlimit in Millisekunden festzulegen. Der Standardwert wird anhand der Einstellung method_config/timeout in googleads_grpc_service_config.json festgelegt. Legen Sie einen niedrigeren Wert fest, wenn Sie ein kürzeres Limit für die maximale Zeit für einen API-Aufruf erzwingen müssen. Sie können das Zeitlimit auf 2 Stunden oder mehr festlegen. Bei extrem lang laufenden Anfragen kann es jedoch trotzdem zu einem Zeitlimit kommen und die API gibt dann den Fehler DEADLINE_EXCEEDED zurück.
  • ProxyServer: Legen Sie hier die URL des HTTP-Proxyservers fest, wenn Sie einen Proxy für die Verbindung mit dem Internet verwenden.
  • ProxyUser: Legen Sie hier den Nutzernamen fest, den Sie für die Authentifizierung beim Proxyserver benötigen. Lassen Sie dieses Feld leer, wenn kein Nutzername erforderlich ist.
  • ProxyPassword: Legen Sie hier das Passwort von ProxyUser fest, wenn Sie einen Wert für ProxyUser festgelegt haben.
  • ProxyDomain: Legen Sie hier die Domain für ProxyUser fest, wenn Ihr Proxyserver eine Domain erfordert.
  • MaxReceiveMessageLengthInBytes: Mit dieser Einstellung können Sie die maximale Größe der API-Antwort erhöhen, die die Clientbibliothek verarbeiten kann. Der Standardwert ist 64 MB.
  • MaxMetadataSizeInBytes: Mit dieser Einstellung können Sie die maximale Größe der API-Fehlerantwort erhöhen, die die Clientbibliothek verarbeiten kann. Der Standardwert ist 16 MB.

Passen Sie die Einstellungen MaxReceiveMessageLengthInBytes und MaxMetadataSizeInBytes an, um bestimmte ResourceExhausted-Fehler zu beheben. Diese Einstellungen beheben Fehler der folgenden Form:

Status(StatusCode="ResourceExhausted",Detail="Received
message larger than max (423184132 versus 67108864)"

In diesem Beispiel ist der Fehler darauf zurückzuführen, dass die Nachrichtengröße (423184132 bytes) größer ist als die von der Bibliothek verarbeitbare Größe (67108864 bytes). Erhöhen Sie MaxReceiveMessageLengthInBytes auf 500000000, um diesen Fehler zu vermeiden. Beachten Sie, dass der Fehler auch darauf hinweist, dass Ihr Code ein sehr großes Antwortobjekt (z. B. ein großes SearchGoogleAdsResponse) verarbeitet hat. Dies könnte aufgrund des Large Object Heap von .NET Auswirkungen auf die Leistung Ihres Codes haben. Wenn dies zu einem Leistungsproblem wird, müssen Sie möglicherweise Ihre API-Aufrufe neu organisieren oder Teile Ihrer App neu gestalten.

OAuth2-Einstellungen

Wenn Sie OAuth 2.0 verwenden, um Ihre Aufrufe an die Google Ads API-Server zu autorisieren, sollten Sie die folgenden Konfigurationsschlüssel festlegen:

  • AuthorizationMethod: Legen Sie OAuth2 fest.
  • OAuth2Mode: Legen Sie APPLICATION oder SERVICE_ACCOUNT fest.
  • OAuth2ClientId: Setzen Sie diesen Wert auf Ihre OAuth 2.0-Client-ID.
  • OAuth2ClientSecret: Legen Sie diesen Wert auf Ihren OAuth 2.0-Clientschlüssel fest.
  • OAuth2Scope: Legen Sie diesen Wert auf verschiedene Bereiche fest, wenn Sie OAuth 2.0-Tokens für mehrere APIs autorisieren möchten. Diese Einstellung ist optional.
  • UseApplicationDefaultCredentials: Setzen Sie diesen Wert auf true, um sich mit Standardanmeldedaten für Anwendungen zu authentifizieren (unterstützt in Google.Ads.GoogleAds v24.1.0 und höher; config.LoadFromEnvironmentVariables() liest die Umgebungsvariable USE_APPLICATION_DEFAULT_CREDENTIALS ohne Präfix).
  • Credentials: (Nur Laufzeit, unterstützt in v27.0.0 und höher) Fügt eine vorkonstruierte ICredential- oder GoogleCredential-Instanz direkt zur Laufzeit in GoogleAdsConfig ein.

Wenn Sie OAuth2Mode == APPLICATION verwenden, müssen Sie die folgenden zusätzlichen Konfigurationsschlüssel festlegen:

  • OAuth2RefreshToken: Legen Sie diesen Wert auf ein vorab generiertes OAuth 2.0-Aktualisierungstoken fest, wenn Sie OAuth 2.0-Tokens wiederverwenden möchten. Diese Einstellung ist optional.
  • OAuth2RedirectUri: Legen Sie diesen Wert auf die OAuth 2.0-Weiterleitungs-URL fest. Diese Einstellung ist optional.

Weitere Informationen finden Sie in den folgenden Leitfäden:

Wenn Sie OAuth2Mode == SERVICE_ACCOUNT verwenden, müssen Sie die folgenden zusätzlichen Konfigurationsschlüssel festlegen:

  • OAuth2SecretsJsonPath: Legen Sie diesen Wert auf den Pfad der JSON-Schlüsseldatei für OAuth 2.0 fest.
  • OAuth2PrnEmail: Legen Sie diesen Wert auf die E-Mail-Adresse des Kontos fest, dessen Identität Sie bei der Verwendung der domainweiten Delegierung von Google Workspace übernehmen. Diese Einstellung ist optional.

Weitere Informationen finden Sie im Leitfaden zum OAuth-Dienstkontoablauf.

Einstellungen für Verkehrsmittel

  • UseGrpcCore: Setzen Sie diese Einstellung auf true, um die Grpc.Core-Bibliothek als zugrunde liegende Transportschicht zu verwenden. Weitere Informationen finden Sie unter Bibliothek Grpc.Core verwenden.

Google Ads API-Einstellungen

Die folgenden Einstellungen gelten speziell für die Google Ads API:

  • LoginCustomerId: Dies ist die Kundennummer des autorisierten Kunden, die in der Anfrage verwendet werden soll, ohne Bindestriche (-).
  • LinkedCustomerId: Dieser Header ist nur für Methoden erforderlich, mit denen die Ressourcen einer Entität aktualisiert werden, wenn die Berechtigung über verknüpfte Konten in der Google Ads-Benutzeroberfläche (AccountLink-Ressource in der Google Ads API) erteilt wurde. Legen Sie diesen Wert auf die Kundennummer des Datenanbieters fest, der die Ressourcen der angegebenen Kundennummer aktualisiert. Sie sollte ohne Bindestriche (-) angegeben werden. Weitere Informationen zu verknüpften Konten