Google udostępnia bibliotekę klienta PHP do interakcji z interfejsem API Ad Managera. Zalecamy używanie biblioteki klienta z Composerem.
Aby rozpocząć, utwórz nowy projekt w wybranym IDE lub dodaj zależność do istniejącego projektu. Google publikuje artefakty biblioteki klienta w Packagist jako googleads/ad-manager.
composer.json
"require": {
"googleads/ad-manager": "^0.14.0"
}
Wiersz poleceń
composer require googleads/ad-manager
Konfigurowanie danych logowania
Biblioteka klienta PHP używa do uwierzytelniania protokołu OAuth2 i domyślnego uwierzytelniania aplikacji (ADC).
ADC szuka danych logowania w kolejności w tych lokalizacjach:
GOOGLE_APPLICATION_CREDENTIALSzmienna środowiskowa.- Dane logowania użytkownika skonfigurowane za pomocą interfejsu wiersza poleceń Google Cloud (gcloud CLI).
- Gdy usługa jest uruchomiona w Google Cloud, jest to konto usługi dołączone do zasobu 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. W poniższym przykładzie odczytywany jest 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; /** * 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); }
Przykłady innych metod i zasobów znajdziesz w repozytorium GitHub googleapis/php-ads-ad-manager.
Logowanie żądań i odpowiedzi HTTP
Biblioteka klienta PHP obsługuje rejestratory zgodne ze standardem PSR-3 do rejestrowania żądań i odpowiedzi HTTP. Domyślnie rejestrowanie jest wyłączone.
Aby włączyć domyślne rejestrowanie w standardowym wyjściu, ustaw zmienną środowiskową
GOOGLE_SDK_PHP_LOGGING
na true w kodzie PHP lub w środowisku:
putenv('GOOGLE_SDK_PHP_LOGGING=true'); $client = new NetworkServiceClient();
export GOOGLE_SDK_PHP_LOGGING=true
Możesz też przekazać dowolny rejestrator zgodny z 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 języka PHP wszystkie błędy interfejsu API Ad Managera zgłaszają wyjątek typu ApiException:
Błędy analizy
Pole przyczyny błędu jednoznacznie identyfikuje typy błędów. Użyj tego pola, aby określić sposób obsługi błędu.
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 Managera zawierają też unikalny request_id, który możesz przekazać zespołowi pomocy, aby uzyskać pomoc w rozwiązywaniu problemów. Ten przykład wyodrębnia 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.