Google предоставляет клиентскую библиотеку .NET для взаимодействия с API Менеджера рекламы. Мы рекомендуем использовать клиентскую библиотеку с NuGet.
Чтобы начать работу, создайте новый проект в выбранной вами IDE или добавьте зависимость в существующий проект. Google публикует артефакты клиентской библиотеки в хранилище NuGet как Google.Ads.AdManager.V1.
Ссылка на пакет
<!-- MyProject.csproj -->
<PackageReference Include="Google.Ads.AdManager.V1" Version="1.0.0-beta12" />
.NET CLI
dotnet add package Google.Ads.AdManager.V1 --version 1.0.0-beta12
Как настроить учетные данные
Для аутентификации клиентская библиотека .NET использует OAuth2 и Application Default Credentials (ADC).
ADC выполняет поиск учетных данных в следующем порядке:
- переменной среды
GOOGLE_APPLICATION_CREDENTIALS. - Учетные данные пользователя, настроенные с помощью интерфейса командной строки Google Cloud (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.
Обработка ошибок
Все ошибки Ad Manager API в клиентской библиотеке.NET относятся к типу 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";
}
Как создавать названия ресурсов
Клиентская библиотека предоставляет вспомогательные классы для создания названий ресурсов на основе идентификаторов. Их можно передавать непосредственно в методы сервиса.
// Represents a resource name in the format:
// "networks/{networkCode}/orders/{orderId}"
OrderName name = OrderName.FromNetworkCodeOrder("123", "456");
Order response = orderServiceClient.GetOrder(name);
Настройка прокси-сервера
Клиентская библиотека .NET учитывает свойство HttpClient.DefaultProxy, в том числе задает прокси-серверы на основе переменных среды HTTP_PROXY и HTTPS_PROXY. Подробнее о свойстве HttpClient.DefaultProxy…