Google 提供了一个 .NET 客户端库,用于与 Ad Manager API 进行交互。 我们建议将客户端库与 NuGet 搭配使用。
首先,在您选择的 IDE 中创建一个新项目,或将依赖项添加到现有项目。Google 会将客户端库工件作为 Google.Ads.AdManager.V1
发布到 NuGet 代码库。
软件包引用
<!-- MyProject.csproj -->
<PackageReference Include="Google.Ads.AdManager.V1" Version="1.0.0-beta01" />
.NET CLI
dotnet add package Google.Ads.AdManager.V1 --version 1.0.0-beta01
配置凭据
.NET 客户端库使用 OAuth2 和应用默认凭据 (ADC) 进行身份验证。
ADC 会按顺序在以下位置搜索凭据:
GOOGLE_APPLICATION_CREDENTIALS
环境变量。- 通过 Google Cloud CLI (gcloud CLI) 设置的用户凭据。
- 在 Google Cloud 上运行时,请使用关联到 Google Cloud 资源的服务账号。
如需创建和配置 ADC 凭据,请参阅身份验证。
发出您的首个请求
每项服务都有一个 ServiceClient
对象,其中包含适用于每种 REST 方法的同步和异步方法。以下示例会同步读取 Network
。所有实体都通过资源名称进行标识,该名称由实体的类型和数字标识符组成。
using Google.Ads.AdManager.V1;
public sealed partial class GeneratedNetworkServiceClientSnippets
{
public void GetNetwork()
{
// Create client
NetworkServiceClient networkServiceClient = NetworkServiceClient.Create();
// Initialize request argument(s)
string name = "networks/[NETWORK_CODE]";
// Make the request
Network response = networkServiceClient.GetNetwork(name);
}
}
如需查看其他方法和资源的示例,请参阅 GitHub 代码库 googleapis/google-cloud-dotnet
。
处理错误
在 .NET 客户端库中,所有 Ad Manager API 错误均为 Grpc.Core.RpcException 类型。
错误包含唯一的 request_id
,您可以将其提供给支持团队,以寻求排查问题方面的帮助。以下示例会提取 HTTP 状态、错误消息和 request_id
。
using Google.Ads.AdManager.V1;
using Google.Api.Gax.Grpc;
using Google.Rpc;
using Grpc.Core;
try
{
NetworkServiceClient networkServiceClient = NetworkServiceClient.Create();
Network network = networkServiceClient.GetNetwork("networks/[NETWORK_CODE]");
}
catch(RpcException e)
{
// HTTP Status code
StatusCode statusCode = e.Status.StatusCode;
// Error message
string errorMessage = e.Status.Detail;
// Unique request identifier.
RequestInfo requestInfo = e.GetStatusDetail<RequestInfo>();
string requestId = requestInfo?.RequestId ?? "Unexpected null request identifier";
}
构建资源名称
客户端库提供了一些辅助类,用于根据 ID 构建资源名称。这些参数可以直接传递给服务方法。
// Represents a resource name in the format:
// "networks/{networkCode}/orders/{orderId}"
OrderName name = OrderName.FromNetworkCodeOrder("123", "456");
Order response = orderServiceClient.GetOrder(name);