PHP

Google proporciona una biblioteca cliente de PHP para interactuar con la API de Ad Manager. Te recomendamos que uses la biblioteca cliente con Composer.

Para comenzar, crea un proyecto nuevo en el IDE que elijas o agrega la dependencia a un proyecto existente. Google publica artefactos de bibliotecas cliente en Packagist como googleads/ad-manager.

composer require googleads/ad-manager

Configura las credenciales

La biblioteca cliente de PHP usa OAuth2 y las credenciales predeterminadas de la aplicación (ADC) para autenticarse.

ADC busca las credenciales en orden en las siguientes ubicaciones:

  1. Con la variable de entorno GOOGLE_APPLICATION_CREDENTIALS.
  2. Credenciales de usuario configuradas a través de Google Cloud CLI (gcloud CLI)
  3. Cuando se ejecuta en Google Cloud, la cuenta de servicio conectada al recurso de Google Cloud

Para crear y configurar tus credenciales de ADC, consulta Autenticación.

Realiza tu primera solicitud

Cada servicio tiene un objeto ServiceClient con métodos para cada método REST. En el siguiente ejemplo, se lee un 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; /** * 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); }

Para ver ejemplos de otros métodos y recursos, consulta el repositorio de GitHub googleapis/php-ads-ad-manager.

Registra las solicitudes y respuestas HTTP

La biblioteca cliente de PHP admite registradores que cumplen con PSR-3 para registrar solicitudes y respuestas HTTP. De forma predeterminada, el registro está inhabilitado.

Para habilitar el registro predeterminado en el resultado estándar, establece la variable de entorno GOOGLE_SDK_PHP_LOGGING en true en tu código PHP o en tu entorno:

putenv('GOOGLE_SDK_PHP_LOGGING=true');

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

Como alternativa, puedes pasar cualquier registrador compatible con PSR-3 cuando crees un cliente de servicio:

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

Soluciona errores

En la biblioteca cliente de PHP, todos los errores de la API de Ad Manager arrojan una excepción de tipo ApiException:

Errores de análisis

El campo motivo del error identifica de forma exclusiva los tipos de error. Usa este campo para determinar cómo manejar el error.

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

Los errores de la API de Ad Manager también incluyen un request_id único que puedes proporcionar al equipo de asistencia para obtener ayuda con la solución de problemas. En el siguiente ejemplo, se extrae 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']);
}

Cómo crear nombres de recursos

La biblioteca cliente proporciona clases de ayuda para compilar nombres de recursos a partir de los 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");

Establece la configuración del proxy

La biblioteca cliente de PHP respeta la configuración del entorno HTTP_PROXY y HTTPS_PROXY.