Google, Ad Manager API ile etkileşime geçmek 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ık öğesini mevcut bir projeye ekleyin. Google, istemci kitaplığı yapılarını googleads/ad-manager
olarak Packagist'te yayınlar.
composer require googleads/ad-manager
Kimlik bilgilerini yapılandırma
PHP istemci kitaplığı, kimlik doğrulama 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_CREDENTIALS
ortam değişkeni.- Google Cloud KSA (gcloud KSA) üzerinden ayarlanan kullanıcı kimlik bilgileri.
- Google Cloud'da çalışırken Google Cloud kaynağına bağlı hizmet hesabı.
ADC kimlik bilgilerinizi oluşturmak ve yapılandırmak için Kimlik doğrulama bölümüne bakın.
İlk isteğinizi gönderin
Her hizmetin, her REST yöntemine ait yöntemleri içeren bir ServiceClient
nesnesi vardır. Aşağıdaki örnekte bir Network
nesnesi okunmaktadır.
<?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); }
Diğer yöntem ve kaynaklara dair örnekler için googleapis/php-ads-ad-manager
GitHub deposuna bakın.
HTTP isteklerini ve yanıtlarını günlüğe kaydetme
PHP istemci kitaplığı, HTTP isteklerini ve yanıtlarını günlük kaydetmek için PSR-3 uyumlu günlük kaydedicileri destekler. Günlüğe kaydetme özelliği varsayılan olarak devre dışıdır.
Standart çıkışa varsayılan 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ükleyiciyi 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ündeki bir istisna oluşturur:
Ayrıştırma hataları
Hata nedeni alanı, hata türlerini benzersiz bir şekilde tanımlar. Hatanın nasıl ele alınacağını belirlemek için bu alanı 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ıklanı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ına uyar.