PHP

Google udostępnia bibliotekę klienta PHP do interakcji z interfejsem Ad Manager API. Zalecamy używanie biblioteki klienta z Composerem.

Aby rozpocząć, utwórz nowy projekt w wybranym środowisku IDE lub dodaj zależność do istniejącego projektu. Google publikuje artefakty biblioteki klienta w usłudze Pachagistgoogleads/ad-manager.

composer require googleads/ad-manager

Konfigurowanie danych logowania

Biblioteka klienta PHP do uwierzytelniania używa OAuth 2 i domyślnych danych logowania aplikacji (ADC).

ADC wyszukuje dane logowania w tych miejscach:

  1. zmiennej środowiskowej GOOGLE_APPLICATION_CREDENTIALS.
  2. Dane logowania użytkownika skonfigurowane za pomocą interfejsu wiersza poleceń Google Cloud (gcloud CLI).
  3. W przypadku uruchamiania w Google Cloud – konto usługi powiązane ze zasobem Google Cloud.

Informacje o tworzeniu i konfigurowaniu danych logowania ADC znajdziesz w sekcji Uwierzytelnianie.

Przesyłanie pierwszej prośby

Każda usługa ma obiekt ServiceClient z metodami dla każdej metody REST. Poniższy przykład odczytuje obiekt 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); }

Przykłady innych metod i zasobów znajdziesz w repozytorium GitHub googleapis/php-ads-ad-manager.

Rejestrowanie żądań i odpowiedzi HTTP

Biblioteka klienta PHP obsługuje rejestratory zgodne z PSR-3 do rejestrowania żądań i odpowiedzi HTTP. Domyślnie logowanie jest wyłączone.

Aby włączyć domyślne rejestrowanie w wyjściu standardowym, ustaw zmienną środowiskową GOOGLE_SDK_PHP_LOGGING na true w kodzie PHP lub środowisku:

putenv('GOOGLE_SDK_PHP_LOGGING=true');

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

Możesz też przekazać dowolny rejestrator zgodny ze standardem PSR-3 podczas tworzenia klienta usługi:

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

Obsługuj błędy

W bibliotece klienta PHP wszystkie błędy interfejsu Ad Manager API wywołują wyjątek typu ApiException:

Błędy analizy

Pole przyczyna błędu jednoznacznie identyfikuje typy błędów. Użyj tego pola, aby określić sposób postępowania z błędem.

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

Błędy interfejsu API Ad Manager zawierają też unikalny identyfikator request_id, który możesz podać zespołowi pomocy, aby uzyskać pomoc w rozwiązywaniu problemów. W tym przykładzie wyodrębniamy element 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']);
}

Tworzenie nazw zasobów

Biblioteka klienta udostępnia klasy pomocnicze do tworzenia nazw zasobów na podstawie identyfikatorów.

use Google\Ads\AdManager\V1\Client\OrderServiceClient;

//  Constructs a String in the format:
//  "networks/{networkCode}/orders/{orderId}"
$orderName = OrderServiceClient::orderName("NETWORK_CODE", "ORDER_ID");

Konfigurowanie ustawień serwera proxy

Biblioteka klienta PHP uwzględnia ustawienia środowiska HTTP_PROXY i HTTPS_PROXY.