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 prefieras o agrega la dependencia a un proyecto existente. Google publica artefactos de bibliotecas cliente en Packagist como googleads/ad-manager.
composer.json
"require": {
"googleads/ad-manager": "^0.14.0"
}
Línea de comandos
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 la autenticación.
ADC busca las credenciales en orden en las siguientes ubicaciones:
- Variable de entorno
GOOGLE_APPLICATION_CREDENTIALS - Credenciales de usuario configuradas a través de Google Cloud CLI (gcloud CLI)
- Cuando se ejecuta en Google Cloud, la cuenta de servicio adjunta 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 de 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; /** * 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); }
Para ver ejemplos de otros métodos y recursos, consulta el repositorio de GitHub googleapis/php-ads-ad-manager.
Registra solicitudes y respuestas HTTP
La biblioteca cliente de PHP admite registradores compatibles con PSR-3 para registrar solicitudes y respuestas HTTP. De forma predeterminada, el registro está inhabilitado.
Para habilitar el registro predeterminado en la salida 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 construyas 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 de motivo del error identifica de forma única los tipos de errores. Usa este campo para determinar cómo controlar 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 al cliente 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 construir nombres de recursos
La biblioteca cliente proporciona clases de ayuda para compilar nombres de recursos a partir de 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.