設定

Google Ads API 用戶端程式庫提供多個設定,可用於自訂程式庫行為。

在執行階段設定程式庫

設定用戶端程式庫的首選方式是在執行階段初始化 GoogleAdsConfig 物件:

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

GoogleAdsClient client = new GoogleAdsClient(config);

其他設定選項

我們也提供其他選項來設定用戶端程式庫:如要啟用這些選項,請在專案中將 Nuget 參照新增至 Google.Ads.GoogleAds.Extensions 套件

如果您使用其中一種選項,系統不會自動選取設定,您必須明確載入設定,如以下所示。

使用 App.config 進行設定

所有 Google Ads API 專屬設定都會儲存在 App.config 檔案的 GoogleAdsApi 節點中。典型的設定 App.config 如下所示:

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

如要從 App.config 檔案載入設定,請對 GoogleAdsConfig 物件呼叫 LoadFromDefaultAppConfigSection 方法:

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

指定個別的 App.config 檔案

如果您不想讓 App.config 雜亂不堪,可以使用 configSource 屬性,將特定程式庫的設定移至其專屬的設定檔。

步驟 1:在 App.config 中指定 configSource

修改 App.config 如下所示:

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

步驟 2:指定設定檔的內容

接著,請使用您在 configSource 上指定的名稱建立另一個設定檔,然後將設定節點從 App.config 移至這個檔案:

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

步驟 3:修正 csproj 中的建構規則

最後,請在專案中加入新的設定檔案。將此檔案的屬性變更為「一律複製至輸出資料夾」

接著建構並執行專案。應用程式會開始從新設定檔擷取值。

使用自訂 JSON 檔案進行設定

您可以使用 IConfigurationRoot 執行個體設定用戶端程式庫。

建立 JSON 檔案

建立名為 GoogleAdsApi.json 的 JSON 檔案,其結構應與 App.config 檔案相似。

{
    "Timeout": "2000",

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

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

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

載入設定

接著,將 JSON 檔案載入 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);

使用 settings.json 進行設定

這個程序與使用自訂 JSON 類似,唯一的差別是鍵應位於名為 GoogleAdsApi 的部分:

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

接著,您可以在頁面中使用 IConfiguration 例項:

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

使用環境變數設定

您也可以使用環境變數初始化 GoogleAdsClient

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

請參閱支援的環境變數完整清單

設定欄位

以下是 Google Ads .NET 程式庫支援的設定清單。

連線設定

  • Timeout:使用這個鍵,以毫秒為單位設定服務逾時時間。預設值會根據 googleads_grpc_service_config.json 中的 method_config/timeout 設定而設定。如果您需要對 API 呼叫的最大時間長度強制執行較短的限制,請設定較低的值。您可以將逾時時間設為 2 小時或更長,但 API 仍可能會針對執行時間極長的要求逾時,並傳回 DEADLINE_EXCEEDED 錯誤。
  • ProxyServer:如果您使用 Proxy 連上網際網路,請將此值設為 HTTP Proxy 伺服器網址。
  • ProxyUser:將此屬性設為您用於 Proxy 伺服器驗證所需的使用者名稱。如果不需要使用者名稱,請留空。
  • ProxyPassword:如果您為 ProxyUser 設定值,請將此值設為 ProxyUser 的密碼。
  • ProxyDomain:如果 Proxy 伺服器需要設定網域,請將此值設為 ProxyUser 的網域。
  • MaxReceiveMessageLengthInBytes:使用這項設定,增加用戶端程式庫可處理的 API 回應最大大小。預設值為 64 MB。
  • MaxMetadataSizeInBytes:使用這項設定,增加用戶端程式庫可處理的 API 錯誤回應最大大小。預設值為 16 MB。

調整 MaxReceiveMessageLengthInBytesMaxMetadataSizeInBytes 設定,即可修正特定 ResourceExhausted 錯誤。這些設定可解決 Status(StatusCode="ResourceExhausted",Detail="Received message larger than max (423184132 versus 67108864)" 表單的錯誤。

在本例中,錯誤是因為訊息大小 (423184132 bytes) 大於程式庫可處理的大小 (67108864 bytes)。請將 MaxReceiveMessageLengthInBytes 增加至 500000000,以避免發生這項錯誤。

請注意,這項錯誤也表示程式碼處理了非常大的 Response 物件 (例如大型 SearchGoogleAdsResponse)。由於 .NET 的Large Object Heap,這可能會對程式碼的效能造成影響。如果這會影響效能,您可能需要瞭解如何重新整理 API 呼叫或重新設計應用程式的部分內容。

OAuth2 設定

使用 OAuth2 授權對 Google Ads API 伺服器的呼叫時,請設定下列設定鍵:

  • AuthorizationMethod:設為 OAuth2
  • OAuth2Mode:設為 APPLICATIONSERVICE_ACCOUNT
  • OAuth2ClientId:將這個值設為 OAuth2 用戶端 ID。
  • OAuth2ClientSecret:將這個值設為 OAuth2 用戶端密鑰。
  • OAuth2Scope:如要為多個 API 授權 OAuth2 權杖,請將這個值設為不同的範圍。這項設定為選用。

如果您使用 OAuth2Mode == APPLICATION,則需要設定下列額外的設定鍵。

  • OAuth2RefreshToken:如要重複使用 OAuth2 權杖,請將這個值設為預先產生的 OAuth2 更新權杖。這項設定為選用。
  • OAuth2RedirectUri:將這個值設為 OAuth2 重新導向網址。這項設定為選用。

詳情請參閱下列指南:

如果您使用 OAuth2Mode == SERVICE_ACCOUNT,則需要設定下列額外的設定鍵。

  • OAuth2PrnEmail:將這個值設為要冒用帳戶的電子郵件地址。
  • OAuth2SecretsJsonPath:將這個值設為 OAuth2 JSON 設定檔路徑。

詳情請參閱 OAuth 服務帳戶流程指南。

交通設定

  • UseGrpcCore:將此設定設為 true,即可使用 Grpc.Core 程式庫做為基礎傳輸層。請參閱「使用舊版 Grpc 程式庫」。

Google Ads API 設定

下列設定適用於 Google Ads API。

  • DeveloperToken:將此屬性設為開發人員權杖。
  • LoginCustomerId:這是要求中要使用的授權客戶客戶 ID,不含連字號 (-)。
  • LinkedCustomerId:只有在 Google Ads 使用者介面 (Google Ads API 中的 AccountLink 資源) 中透過連結帳戶授予權限時,才需要使用這個標頭,以更新實體的資源。將這個值設為資料提供者的客戶 ID,該 ID 會更新指定客戶 ID 的資源。請勿在設定時加入連字號 (-)。進一步瞭解連結帳戶