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 dazu ein neues Projekt in der IDE Ihrer Wahl oder fügen Sie die Abhängigkeit einem vorhandenen Projekt hinzu. Google veröffentlicht Clientbibliotheksartefakte auf Packagist als googleads/ad-manager.
composer.json
"require": {
"googleads/ad-manager": "^0.14.0"
}
Befehlszeile
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 folgenden Standorten nach Anmeldedaten:
- Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS. - Nutzeranmeldedaten, die über die Google Cloud CLI (gcloud CLI) eingerichtet wurden.
- Wenn die Anwendung in Google Cloud ausgeführt wird, das Dienstkonto, das an die Google Cloud-Ressource angehängt ist.
Informationen zum Erstellen und Konfigurieren von 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; /** * 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); }
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 Logger zum Protokollieren von HTTP-Anfragen und -Antworten. Standardmäßig ist das Logging deaktiviert.
Wenn Sie die Standardprotokollierung in die 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 ausgelöst:
Parsing-Fehler
Das Feld „Fehlerursache“ identifiziert Fehlertypen eindeutig. Anhand dieses Felds können Sie festlegen, wie der Fehler behandelt 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 auch eine eindeutige request_id, die Sie dem Support zur Fehlerbehebung zur Verfügung stellen 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.