Google Ads API 客户端库提供了多个配置设置,您可以使用这些设置来自定义库行为。
在运行时配置库
配置客户端库的首选方法是在运行时初始化 GoogleAdsConfig
对象:
GoogleAdsConfig config = new GoogleAdsConfig()
{
DeveloperToken = "******",
OAuth2Mode = OAuth2Flow.APPLICATION,
OAuth2ClientId = "******.apps.googleusercontent.com",
OAuth2ClientSecret = "******",
OAuth2RefreshToken = "******"
};
GoogleAdsClient client = new GoogleAdsClient(config);
备选配置选项
我们还提供了一些其他用于配置客户端库的选项:如需启用这些选项,请在项目中向 Google.Ads.GoogleAds.Extensions
软件包添加 Nuget 引用。
如果您使用其中一种选项,系统不会自动提取配置设置:您应按如下所示明确加载这些设置。
使用 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
:如果您使用代理连接到互联网,请将此值设置为 HTTP 代理服务器网址。ProxyUser
:将此值设置为您需要用来对代理服务器进行身份验证的用户名。如果不需要用户名,请将此字段留空。ProxyPassword
:如果您为ProxyUser
设置了值,请将此值设置为ProxyUser
的密码。ProxyDomain
:如果您的代理服务器需要设置域名,请将此值设置为ProxyUser
的域名。MaxReceiveMessageLengthInBytes
:使用此设置可增加客户端库可处理的 API 响应的大小上限。默认值为 64 MB。MaxMetadataSizeInBytes
:使用此设置可增加客户端库可处理的 API 错误响应的大小上限。默认值为 16 MB。
调整
MaxReceiveMessageLengthInBytes
和MaxMetadataSizeInBytes
设置以修复某些ResourceExhausted
错误。这些设置可解决格式为Status(StatusCode="ResourceExhausted",Detail="Received message larger than max (423184132 versus 67108864)"
的错误。在此示例中,错误是由于消息大小 (
423184132 bytes
) 大于库可以处理的大小 (67108864 bytes
) 所致。请将MaxReceiveMessageLengthInBytes
增加到500000000
以避免此错误。请注意,该错误还表明您的代码处理了非常大的 Response 对象(例如较大的
SearchGoogleAdsResponse
)。由于 .NET 的大型对象堆,这可能会对代码的性能产生影响。如果这成为性能问题,您可能需要探索如何重新整理 API 调用或重新设计应用的某些部分。
OAuth2 设置
使用 OAuth2 授权对 Google Ads API 服务器的调用时,您应设置以下配置键:
AuthorizationMethod
:设置为OAuth2
。OAuth2Mode
:设置为APPLICATION
或SERVICE_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。设置时应不带连字符 (-
)。详细了解关联的账号。