Konfiguracja

Biblioteka klienta interfejsu Google Ads API udostępnia kilka ustawień konfiguracyjnych, których możesz użyć do dostosowania jej działania.

Konfigurowanie biblioteki w czasie działania

Preferowany sposób konfigurowania biblioteki klienta polega na zainicjowaniu obiektu GoogleAdsConfig w czasie działania:

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

Alternatywne opcje konfiguracji

Biblioteka udostępnia też dodatkowe opcje wczytywania ustawień konfiguracyjnych. Aby je włączyć, dodaj w projekcie odwołanie NuGet do Google.Ads.GoogleAds.Extensions pakietu.

Jeśli używasz jednej z tych opcji, ustawienia konfiguracyjne nie są wczytywane automatycznie. Musisz je wczytać ręcznie, jak pokazano w kolejnych sekcjach. Podczas wczytywania ustawień z plików zewnętrznych lub strumieni pamiętaj o obsłudze wyjątków wejścia/wyjścia (takich jak FileNotFoundException lub UnauthorizedAccessException).

Używanie pliku App.config

Wszystkie ustawienia dotyczące interfejsu Google Ads API są przechowywane w węźle GoogleAdsApi pliku App.config. Typowa konfiguracja App.config wygląda tak:

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

Aby wczytać ustawienia konfiguracyjne z pliku App.config, wywołaj metodę LoadFromDefaultAppConfigSection na obiekcie GoogleAdsConfig:

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

Określanie osobnego pliku App.config

Jeśli nie chcesz, aby plik App.config był zbyt długi, możesz przenieść konfigurację dotyczącą biblioteki do osobnego pliku konfiguracyjnego za pomocą właściwości configSource:

  1. Określ configSource w pliku App.config. Zmodyfikuj plik App.config, aby odwoływał się do zewnętrznego pliku konfiguracyjnego:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="GoogleAdsApi"
                 type="System.Configuration.DictionarySectionHandler" />
      </configSections>
      <GoogleAdsApi configSource="GoogleAdsApi.config" />
    </configuration>
    
  2. Określ zawartość pliku konfiguracyjnego Utwórz inny plik konfiguracyjny o nazwie podanej w configSource (GoogleAdsApi.config) i przenieś do niego węzeł konfiguracji GoogleAdsApi z pliku App.config:

    <?xml version="1.0" encoding="utf-8" ?>
    <GoogleAdsApi>
      <!-- More settings. -->
    </GoogleAdsApi>
    
  3. Zaktualizuj reguły kompilacji w pliku .csproj. Dołącz nowy plik konfiguracyjny do projektu i ustaw jego właściwość Kopiuj do katalogu wyjściowego na Zawsze kopiuj. Ponownie skompiluj i uruchom projekt, aby aplikacja pobierała wartości z nowego pliku konfiguracyjnego.

Używanie niestandardowego pliku JSON

Do skonfigurowania biblioteki klienta możesz użyć instancji IConfigurationRoot.

Tworzenie pliku JSON

Utwórz plik JSON o nazwie GoogleAdsApi.json, który ma podobną strukturę do pliku 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"
}

Wczytywanie konfiguracji

Następnie wczytaj plik JSON do 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);

Używanie pliku settings.json

Proces jest podobny do używania niestandardowego pliku JSON, z tym że klucze powinny znajdować się w sekcji o nazwie GoogleAdsApi:

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

Następnie wyodrębnij sekcję GoogleAdsApi z instancji IConfiguration aplikacji (np. wstrzykniętej przez ASP.NET Core lub utworzonej za pomocą ConfigurationBuilder):

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

Możesz też wczytać plik settings.json bezpośrednio według ścieżki za pomocą config.LoadFromSettingsJson(filePath, "GoogleAdsApi") lub ze zmiennej środowiskowej GOOGLE_ADS_CONFIGURATION_FILE_PATH (EnvironmentVariableNames.CONFIG_FILE_PATH) za pomocą config.TryLoadFromEnvironmentFilePath.

Używanie zmiennych środowiskowych

Możesz też zainicjować GoogleAdsClient za pomocą zmiennych środowiskowych:

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

Wyświetl pełną listę obsługiwanych zmiennych środowiskowych.

Używanie strumienia ogólnego

Konfigurację lub jej części możesz też wczytać ze strumienia ogólnego, w tym zaszyfrowanego:

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

Pola konfiguracji

W kolejnych sekcjach znajdziesz listę ustawień obsługiwanych przez bibliotekę Google Ads .NET.

Ustawienia połączenia

  • Timeout: użyj tego klucza, aby ustawić limit czasu usługi w milisekundach. Wartość domyślna jest ustawiana na podstawie ustawienia method_config/timeout w googleads_grpc_service_config.json. Jeśli chcesz wymusić krótszy limit maksymalnego czasu wywołania interfejsu API, ustaw niższą wartość. Możesz ustawić limit czasu na 2 godziny lub więcej, ale interfejs API może nadal przekroczyć limit czasu w przypadku bardzo długotrwałych żądań i zwrócić błąd DEADLINE_EXCEEDED.
  • ProxyServer: jeśli do łączenia się z internetem używasz serwera proxy, ustaw tę wartość na adres URL serwera proxy HTTP.
  • ProxyUser: ustaw tę wartość na nazwę użytkownika wymaganą do uwierzytelnienia na serwerze proxy. Jeśli nazwa użytkownika nie jest wymagana, pozostaw to pole puste.
  • ProxyPassword: jeśli ustawisz wartość ProxyUser, ustaw tę wartość na hasło ProxyUser.
  • ProxyDomain: jeśli serwer proxy wymaga ustawienia domeny, ustaw tę wartość na domenę ProxyUser.
  • MaxReceiveMessageLengthInBytes: użyj tego ustawienia, aby zwiększyć maksymalny rozmiar odpowiedzi interfejsu API, którą może obsłużyć biblioteka klienta. Wartość domyślna to 64 MB.
  • MaxMetadataSizeInBytes: użyj tego ustawienia, aby zwiększyć maksymalny rozmiar odpowiedzi na błąd interfejsu API, którą może obsłużyć biblioteka klienta. Wartość domyślna to 16 MB.

Dostosuj ustawienia MaxReceiveMessageLengthInBytes i MaxMetadataSizeInBytes, aby naprawić niektóre błędy ResourceExhausted. Te ustawienia rozwiązują błędy w postaci:

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

W tym przykładzie błąd jest spowodowany tym, że rozmiar wiadomości (423184132 bytes) jest większy niż rozmiar, który może obsłużyć biblioteka (67108864 bytes). Aby uniknąć tego błędu, zwiększ wartość MaxReceiveMessageLengthInBytes do 500000000. Pamiętaj , że błąd wskazuje też, że Twój kod obsłużył znacznie większy obiekt odpowiedzi (np. duży SearchGoogleAdsResponse). Może to mieć wpływ na wydajność kodu ze względu na stertę dużych obiektów .NET . Jeśli stanie się to problemem z wydajnością, być może trzeba będzie zmienić sposób organizacji wywołań interfejsu API lub przeprojektować części aplikacji.

Ustawienia OAuth2

Jeśli do autoryzowania wywołań serwerów interfejsu Google Ads API używasz protokołu OAuth 2.0, ustaw te klucze konfiguracji:

  • AuthorizationMethod: ustaw na OAuth2.
  • OAuth2Mode: ustaw na APPLICATION lub SERVICE_ACCOUNT.
  • OAuth2ClientId: ustaw tę wartość na identyfikator klienta OAuth 2.0.
  • OAuth2ClientSecret: ustaw tę wartość na tajny klucz klienta OAuth 2.0.
  • OAuth2Scope: jeśli chcesz autoryzować tokeny OAuth 2.0 w przypadku wielu interfejsów API, ustaw tę wartość na różne zakresy. To ustawienie jest opcjonalne.
  • UseApplicationDefaultCredentials: ustaw tę wartość na true, aby uwierzytelniać się za pomocą domyślnego uwierzytelniania aplikacji (obsługiwane w Google.Ads.GoogleAds v24.1.0 i nowszych; config.LoadFromEnvironmentVariables() odczytuje zmienną środowiskową USE_APPLICATION_DEFAULT_CREDENTIALS bez prefiksu).
  • Credentials: (tylko w czasie działania, obsługiwane w wersji v27.0.0 i nowszych) wstrzyknij wstępnie utworzoną instancję ICredential lub GoogleCredential bezpośrednio do GoogleAdsConfig w czasie działania.

Jeśli używasz OAuth2Mode == APPLICATION, musisz ustawić te dodatkowe klucze konfiguracji:

  • OAuth2RefreshToken: jeśli chcesz ponownie używać tokenów OAuth 2.0, ustaw tę wartość na wstępnie wygenerowany token odświeżania OAuth 2.0. To ustawienie jest opcjonalne.
  • OAuth2RedirectUri: ustaw tę wartość na adres URL przekierowania OAuth 2.0. To ustawienie jest opcjonalne.

Więcej informacji znajdziesz w tych przewodnikach:

Jeśli używasz OAuth2Mode == SERVICE_ACCOUNT, musisz ustawić te dodatkowe klucze konfiguracji:

  • OAuth2SecretsJsonPath: ustaw tę wartość na ścieżkę do pliku klucza JSON OAuth 2.0.
  • OAuth2PrnEmail: jeśli używasz delegowania w całej domenie Google Workspace, ustaw tę wartość na adres e-mail konta, które ma być reprezentowane. To ustawienie jest opcjonalne.

Więcej informacji znajdziesz w przewodniku po procesie OAuth na koncie usługi.

Ustawienia transportu

  • UseGrpcCore: ustaw tę wartość na true, aby używać biblioteki Grpc.Core jako podstawowej warstwy transportowej. Zobacz Używanie biblioteki Grpc.Core.

Ustawienia interfejsu Google Ads API

Te ustawienia dotyczą interfejsu Google Ads API:

  • LoginCustomerId: jest to identyfikator klienta autoryzowanego do używania w żądaniu, bez łączników (-).
  • LinkedCustomerId: ten nagłówek jest wymagany tylko w przypadku metod, które aktualizują zasoby encji, gdy uprawnienia są przyznawane za pomocą połączonych kont w interfejsie Google Ads (AccountLink w interfejsie Google Ads API). Ustaw tę wartość na identyfikator klienta dostawcy danych, który aktualizuje zasoby określonego identyfikatora klienta. Należy go ustawić bez łączników (-). Więcej informacji o połączonych kontach.