PHP

Google fornisce una libreria client PHP per interagire con l'API Ad Manager. Ti consigliamo di utilizzare la libreria client con Composer.

Per iniziare, crea un nuovo progetto nell'IDE che preferisci o aggiungi la dipendenza a un progetto esistente. Google pubblica gli artefatti della libreria client su Packagist come googleads/ad-manager.

composer.json

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

Riga di comando

composer require googleads/ad-manager

Configurare le credenziali

La libreria client PHP utilizza OAuth2 e le Credenziali predefinite dell'applicazione (ADC) per l'autenticazione.

ADC cerca le credenziali in ordine nelle seguenti posizioni:

  1. variabile di ambiente GOOGLE_APPLICATION_CREDENTIALS.
  2. Credenziali utente configurate tramite Google Cloud CLI (gcloud CLI).
  3. Quando viene eseguito su Google Cloud, il service account collegato alla risorsa Google Cloud.

Per creare e configurare le credenziali ADC, consulta la sezione Autenticazione.

Effettuare la prima richiesta

Ogni servizio ha un oggetto ServiceClient con metodi per ogni metodo REST. L'esempio seguente legge un oggetto 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); }

Per esempi di altri metodi e risorse, consulta il repository GitHub googleapis/php-ads-ad-manager.

Registra richieste e risposte HTTP

La libreria client PHP supporta i logger conformi a PSR-3 per la registrazione di richieste e risposte HTTP. Per impostazione predefinita, la registrazione è disattivata.

Per attivare la registrazione predefinita nell'output standard, imposta la variabile di ambiente GOOGLE_SDK_PHP_LOGGING su true nel codice PHP o nell'ambiente:

putenv('GOOGLE_SDK_PHP_LOGGING=true');

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

In alternativa, puoi passare qualsiasi logger conforme a PSR-3 durante la creazione di un client di servizio:

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

Gestisci gli errori

Nella libreria client PHP, tutti gli errori dell'API Ad Manager generano un'eccezione di tipo ApiException:

Errori di analisi

Il campo Motivo dell'errore identifica in modo univoco i tipi di errore. Utilizza questo campo per determinare come gestire l'errore.

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

Gli errori dell'API Ad Manager includono anche un request_id univoco che puoi fornire all'assistenza per ricevere aiuto con la risoluzione dei problemi. L'esempio seguente estrae 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']);
}

Costruisci nomi delle risorse

La libreria client fornisce classi helper per creare nomi di risorse dagli ID.

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

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

Configurare le impostazioni proxy

La libreria client PHP rispetta le impostazioni dell'ambiente HTTP_PROXY e HTTPS_PROXY.