PHP

O Google oferece uma biblioteca de cliente PHP para interagir com a API Ad Manager. Recomendamos usar a biblioteca de cliente com o Composer.

Para começar, crie um novo projeto no ambiente de desenvolvimento integrado (IDE) que você escolher ou adicione a dependência a um projeto existente. O Google publica artefatos de biblioteca de cliente no Packagist como googleads/ad-manager.

composer require googleads/ad-manager

Configurar credenciais

A biblioteca de cliente PHP usa o OAuth2 e o Application Default Credentials (ADC) para autenticação.

O ADC procura credenciais na seguinte ordem:

  1. variável de ambiente GOOGLE_APPLICATION_CREDENTIALS.
  2. Credenciais do usuário configuradas pela CLI do Google Cloud (CLI gcloud).
  3. Quando executado no Google Cloud, a conta de serviço anexada ao recurso do Google Cloud.

Para criar e configurar suas credenciais do ADC, consulte Autenticação.

Faça sua primeira solicitação

Cada serviço tem um objeto ServiceClient com métodos para cada método REST. O exemplo abaixo lê um objeto 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; /** * API to retrieve 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); }

Para conferir exemplos de outros métodos e recursos, consulte o repositório do GitHub googleapis/php-ads-ad-manager.

Registrar solicitações e respostas HTTP

A biblioteca de cliente PHP oferece suporte a registradores compatíveis com PSR-3 para registrar solicitações e respostas HTTP. Por padrão, a geração de registros fica desativada.

Para ativar o registro padrão na saída padrão, defina a variável de ambiente GOOGLE_SDK_PHP_LOGGING como true no código PHP ou no ambiente:

putenv('GOOGLE_SDK_PHP_LOGGING=true');

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

Como alternativa, é possível transmitir qualquer registrador compatível com PSR-3 ao criar um cliente de serviço:

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
]);

Solucionar erros

Na biblioteca de cliente do PHP, todos os erros da API do Ad Manager geram uma exceção do tipo ApiException:

Erros de análise

O campo "Motivo do erro" identifica de forma exclusiva os tipos de erro. Use este campo para determinar como lidar com o erro.

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());
}

Os erros da API Ad Manager também incluem um request_id exclusivo que pode ser enviado ao suporte para receber ajuda na solução de problemas. O exemplo a seguir extrai o 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']);
}

Criar nomes de recursos

A biblioteca de cliente fornece classes auxiliares para criar nomes de recursos a partir de IDs.

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

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

Definir as configurações de proxy

A biblioteca de cliente do PHP respeita as configurações de ambiente HTTP_PROXY e HTTPS_PROXY.