PHP

Google предоставляет PHP-библиотеку для взаимодействия с API Ad Manager. Мы рекомендуем использовать эту библиотеку с Composer .

Для начала создайте новый проект в выбранной вами IDE или добавьте зависимость к существующему проекту. Google публикует артефакты клиентской библиотеки в Packagist по адресу googleads/ad-manager .

composer.json

"require": {
  "googleads/ad-manager": "^0.14.0"
}

Командная строка

composer require googleads/ad-manager

Настройка учетных данных

Клиентская библиотека PHP использует OAuth2 и учетные данные приложения по умолчанию (ADC) для аутентификации.

ADC выполняет поиск учетных данных в следующем порядке:

  1. Переменная среды GOOGLE_APPLICATION_CREDENTIALS .
  2. Учетные данные пользователя настраиваются через интерфейс командной строки Google Cloud (gcloud CLI).
  3. При работе в Google Cloud учетная запись службы, привязанная к ресурсу Google Cloud.

Для создания и настройки учетных данных ADC см. раздел «Аутентификация» .

Сделайте свой первый запрос

Каждый сервис имеет объект ServiceClient с методами для каждого REST-метода. В следующем примере считывается объект Network .

<?php

use Google\Ads\AdManager\V1\Client\NetworkServiceClient;
use Google\Ads\AdManager\V1\GetNetworkRequest; use Google\Ads\AdManager\V1\Network; use Google\ApiCore\ApiException; /** * Retrieves a `Network` object. * * @param string $formattedName Resource name of Network. * Format: networks/{network_code} * Please see {@see NetworkServiceClient::networkName()} for help formatting this field. */ function get_network_sample(string $formattedName): void { // Create a client. $networkServiceClient = new NetworkServiceClient(); // Prepare the request message. $request = (new GetNetworkRequest()) ->setName($formattedName); // Call the API and handle any network failures. try { /** @var Network $response */ $response = $networkServiceClient->getNetwork($request); printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); } catch (ApiException $ex) { printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); } } /** * Helper to execute the sample. * */ function callSample(): void { $formattedName = NetworkServiceClient::networkName('NETWORK_CODE'); get_network_sample($formattedName); }

Примеры других методов и ресурсов можно найти в репозитории GitHub googleapis/php-ads-ad-manager .

Регистрируйте HTTP-запросы и ответы.

Клиентская библиотека PHP поддерживает логгеры, соответствующие стандарту PSR-3, для регистрации HTTP-запросов и ответов. По умолчанию логирование отключено.

Чтобы включить вывод логов по умолчанию в стандартный поток вывода, установите переменную среды GOOGLE_SDK_PHP_LOGGING в true либо в вашем PHP-коде, либо в среде выполнения:

putenv('GOOGLE_SDK_PHP_LOGGING=true');

$client = new NetworkServiceClient();
export GOOGLE_SDK_PHP_LOGGING=true

В качестве альтернативы, при создании клиента сервиса можно передать любой логгер, совместимый с PSR-3:

use Monolog\Handler\StreamHandler;
use Monolog\Level;
use Monolog\Logger;

$monologLogger = new Logger('sdk client');
$monologLogger->pushHandler(new StreamHandler('php://stdout', Level::Debug));

$client = new NetworkServiceClient([
    'logger' => $monologLogger
]);

Обработка ошибок

В клиентской библиотеке PHP все ошибки API Ad Manager генерируют исключение типа ApiException :

Ошибки синтаксического анализа

Поле «Причина ошибки» однозначно определяет тип ошибки. Используйте это поле, чтобы определить способ обработки ошибки.

try {
    $response = $networkServiceClient->getNetwork($formattedName);
    printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString());
} catch (ApiException $ex) {
    printf('Error message: %s' . PHP_EOL, $ex->getBasicMessage());
    printf('Reason: %s' . PHP_EOL, $ex->getReason());
}

В сообщениях об ошибках API Ad Manager также указывается уникальный request_id который вы можете предоставить в службу поддержки для получения помощи в устранении неполадок. В следующем примере извлекается request_id .

$requestInfo = null;
foreach ($ex->getMetadata() as $metadata) {
    if($metadata["@type"] === "type.googleapis.com/google.rpc.RequestInfo") {
        $requestInfo = $metadata;
        break;
    }
}
if ($requestInfo == null) {
    printf('Unexpected empty RequestInfo');
} else {
    printf('RequestId: %s' . PHP_EOL, $requestInfo['requestId']);
}

Формирование имен ресурсов

Клиентская библиотека предоставляет вспомогательные классы для формирования имен ресурсов на основе идентификаторов.

use Google\Ads\AdManager\V1\Client\OrderServiceClient;

//  Constructs a String in the format:
//  "networks/{networkCode}/orders/{orderId}"
$orderName = OrderServiceClient::orderName("NETWORK_CODE", "ORDER_ID");

Настройка параметров прокси-сервера

Клиентская библиотека PHP учитывает настройки среды HTTP_PROXY и HTTPS_PROXY .