PHP

Google stellt eine PHP-Clientbibliothek für die Interaktion mit der Ad Manager API bereit. Wir empfehlen, die Clientbibliothek mit Composer zu verwenden.

Erstellen Sie zuerst ein neues Projekt in der IDE Ihrer Wahl oder fügen Sie die Abhängigkeit einem vorhandenen Projekt hinzu. Google veröffentlicht Clientbibliotheksartefakte in Packagist als googleads/ad-manager.

composer require googleads/ad-manager

Anmeldedaten konfigurieren

Die PHP-Clientbibliothek verwendet OAuth2 und Standardanmeldedaten für Anwendungen (Application Default Credentials, ADC) für die Authentifizierung.

ADC sucht in der folgenden Reihenfolge an den folgenden Standorten nach Anmeldedaten:

  1. GOOGLE_APPLICATION_CREDENTIALS-Umgebungsvariable.
  2. Über die Google Cloud CLI (gcloud CLI) eingerichtete Nutzeranmeldedaten
  3. Wenn die Ausführung in Google Cloud erfolgt, das an die Google Cloud-Ressource angehängte Dienstkonto.

Informationen zum Erstellen und Konfigurieren Ihrer ADC-Anmeldedaten finden Sie unter Authentifizierung.

Erste Anfrage senden

Jeder Dienst hat ein ServiceClient-Objekt mit Methoden für jede REST-Methode. Im folgenden Beispiel wird ein Network-Objekt gelesen.

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

Beispiele für andere Methoden und Ressourcen finden Sie im GitHub-Repository googleapis/php-ads-ad-manager.

HTTP-Anfragen und ‑Antworten protokollieren

Die PHP-Clientbibliothek unterstützt PSR-3-kompatible Logging-Bibliotheken für das Logging von HTTP-Anfragen und ‑antworten. Standardmäßig ist das Logging deaktiviert.

Wenn Sie das Standard-Logging in der Standardausgabe aktivieren möchten, legen Sie die Umgebungsvariable GOOGLE_SDK_PHP_LOGGING entweder in Ihrem PHP-Code oder in Ihrer Umgebung auf true fest:

putenv('GOOGLE_SDK_PHP_LOGGING=true');

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

Alternativ können Sie beim Erstellen eines Dienstclients einen beliebigen PSR-3-kompatiblen Logger übergeben:

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

Fehler verarbeiten

In der PHP-Clientbibliothek wird bei allen Ad Manager API-Fehlern eine Ausnahme vom Typ ApiException geworfen:

Parsing-Fehler

Im Feld „Fehlerursache“ werden Fehlertypen eindeutig identifiziert. Mit diesem Feld legen Sie fest, wie mit dem Fehler umgegangen werden soll.

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

Ad Manager API-Fehler enthalten außerdem eine eindeutige request_id, die Sie dem Support zur Fehlerbehebung mitteilen können. Im folgenden Beispiel wird request_id extrahiert.

$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']);
}

Ressourcennamen erstellen

Die Clientbibliothek bietet Hilfsklassen zum Erstellen von Ressourcennamen aus 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");

Proxy-Einstellungen konfigurieren

Die PHP-Clientbibliothek berücksichtigt die Umgebungseinstellungen HTTP_PROXY und HTTPS_PROXY.