PHP

Google fournit une bibliothèque cliente PHP permettant d'interagir avec l'API Ad Manager. Nous vous recommandons d'utiliser la bibliothèque cliente avec Composer.

Pour commencer, créez un projet dans l'IDE de votre choix ou ajoutez la dépendance à un projet existant. Google publie des artefacts de bibliothèque cliente sur Packagist sous la forme googleads/ad-manager.

composer.json

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

Ligne de commande

composer require googleads/ad-manager

Configurer les identifiants

La bibliothèque cliente PHP utilise OAuth2 et les identifiants par défaut de l'application (ADC) pour l'authentification.

L'ADC recherche les identifiants dans l'ordre suivant :

  1. variable d'environnement GOOGLE_APPLICATION_CREDENTIALS.
  2. Identifiants utilisateur configurés avec Google Cloud CLI (gcloud CLI).
  3. Lors de l'exécution sur Google Cloud, le compte de service associé à la ressource Google Cloud.

Pour créer et configurer vos identifiants ADC, consultez Authentification.

Créer votre première demande

Chaque service possède un objet ServiceClient avec des méthodes pour chaque méthode REST. L'exemple suivant lit un objet 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); }

Pour obtenir des exemples d'autres méthodes et ressources, consultez le dépôt GitHub googleapis/php-ads-ad-manager.

Enregistrer les requêtes et les réponses HTTP

La bibliothèque cliente PHP est compatible avec les enregistreurs conformes à PSR-3 pour enregistrer les requêtes et les réponses HTTP. Par défaut, la journalisation est désactivée.

Pour activer la journalisation par défaut sur la sortie standard, définissez la variable d'environnement GOOGLE_SDK_PHP_LOGGING sur true dans votre code PHP ou votre environnement :

putenv('GOOGLE_SDK_PHP_LOGGING=true');

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

Vous pouvez également transmettre n'importe quel enregistreur conforme à PSR-3 lors de la construction d'un client de service :

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

Gérer les erreurs

Dans la bibliothèque cliente PHP, toutes les erreurs de l'API Ad Manager génèrent une exception de type ApiException :

Erreurs d'analyse

Le champ "Raison de l'erreur" identifie de manière unique les types d'erreurs. Utilisez ce champ pour déterminer comment gérer l'erreur.

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

Les erreurs de l'API Ad Manager incluent également un request_id unique que vous pouvez fournir à l'assistance pour obtenir de l'aide concernant la résolution des problèmes. L'exemple suivant extrait 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']);
}

Construire des noms de ressources

La bibliothèque cliente fournit des classes d'assistance pour créer des noms de ressources à partir d'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");

Configurer les paramètres de proxy

La bibliothèque cliente PHP respecte les paramètres d'environnement HTTP_PROXY et HTTPS_PROXY.