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 projeto no ambiente de desenvolvimento integrado da sua escolha ou adicione a dependência a um projeto atual. O Google publica artefatos de biblioteca de cliente no
Packagist como
googleads/ad-manager.
composer.json
"require": {
"googleads/ad-manager": "^0.14.0"
}
Linha de comando
composer require googleads/ad-manager
Configurar credenciais
A biblioteca de cliente PHP usa o OAuth2 e o Application Default Credentials (ADC) para autenticar.
O ADC procura credenciais na seguinte ordem:
- Variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS. - Credenciais do usuário configuradas pela CLI do Google Cloud (CLI gcloud).
- Ao executar 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 a seguir 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; /** * 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); }
Para 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 é compatível com 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, transmita qualquer logger compatível com PSR-3 ao construir 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 PHP, todos os erros da API 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 esse 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 você pode
fornecer ao suporte para receber ajuda com a
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']); }
Construir nomes de recursos
A biblioteca de cliente fornece classes auxiliares para criar nomes de recursos com base em 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.