.NET

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 在以下位置按顺序搜索凭据:

  1. GOOGLE_APPLICATION_CREDENTIALS 环境变量。
  2. 通过 Google Cloud CLI (gcloud CLI) 设置的用户凭据。
  3. 在 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);