Google, Ad Manager API ile etkileşim kurmak için bir PHP istemci kitaplığı sağlar. İstemci kitaplığını Composer ile kullanmanızı öneririz.
Başlamak için tercih ettiğiniz IDE'de yeni bir proje oluşturun veya bağımlılığı mevcut bir projeye ekleyin. Google, istemci kitaplığı yapılarını Packagist'e googleads/ad-manager olarak yayınlar.
composer.json
"require": {
"googleads/ad-manager": "^0.14.0"
}
Komut satırı
composer require googleads/ad-manager
Kimlik bilgilerini yapılandırma
PHP istemci kitaplığı, kimlik doğrulamak için OAuth2 ve Uygulama Varsayılan Kimlik Bilgileri'ni (ADC) kullanır.
ADC, kimlik bilgilerini aşağıdaki konumlarda sırayla arar:
GOOGLE_APPLICATION_CREDENTIALSortam değişkeni.- Google Cloud CLI (gcloud CLI) aracılığıyla ayarlanan kullanıcı kimlik bilgileri.
- Google Cloud'da çalışırken Google Cloud kaynağına eklenen hizmet hesabı.
ADC kimlik bilgilerinizi oluşturma ve yapılandırma hakkında bilgi edinmek için Kimlik doğrulama başlıklı makaleyi inceleyin.
İlk isteğinizi gönderme
Her hizmetin, her REST yöntemi için yöntemler içeren bir ServiceClient nesnesi vardır. Aşağıdaki örnekte bir Network nesnesi okunur.
<?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); }
Diğer yöntem ve kaynak örnekleri için GitHub deposuna
googleapis/php-ads-ad-manager bakın.
HTTP isteklerini ve yanıtlarını günlüğe kaydetme
PHP istemci kitaplığı, HTTP isteklerini ve yanıtlarını kaydetmek için PSR-3 uyumlu günlük kaydedicileri destekler. Günlüğe kaydetme özelliği varsayılan olarak devre dışıdır.
Varsayılan olarak standart çıkışa günlük kaydını etkinleştirmek için PHP kodunuzda veya ortamınızda GOOGLE_SDK_PHP_LOGGING ortam değişkenini true olarak ayarlayın:
putenv('GOOGLE_SDK_PHP_LOGGING=true'); $client = new NetworkServiceClient();
export GOOGLE_SDK_PHP_LOGGING=true
Alternatif olarak, bir hizmet istemcisi oluştururken PSR-3 uyumlu herhangi bir günlükçüyü iletebilirsiniz:
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 ]);
Hataları işleme
PHP istemci kitaplığında, tüm Ad Manager API hataları ApiException türünde bir istisna oluşturur:
Ayrıştırma hataları
Hata nedeni alanı, hata türlerini benzersiz bir şekilde tanımlar. Bu alanı, hatanın nasıl ele alınacağını belirlemek için kullanın.
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()); }
Ad Manager API hataları, sorun giderme konusunda yardım almak için destek ekibine iletebileceğiniz benzersiz bir request_id de içerir. Aşağıdaki örnekte request_id ayıklanmaktadır.
$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']); }
Kaynak adları oluşturma
İstemci kitaplığı, kimliklerden kaynak adları oluşturmak için yardımcı sınıflar sağlar.
use Google\Ads\AdManager\V1\Client\OrderServiceClient; // Constructs a String in the format: // "networks/{networkCode}/orders/{orderId}" $orderName = OrderServiceClient::orderName("NETWORK_CODE", "ORDER_ID");
Proxy ayarlarını yapılandırma
PHP istemci kitaplığı, HTTP_PROXY ve HTTPS_PROXY ortam ayarlarını dikkate alır.