PHP

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'te googleads/ad-manager olarak yayınlar.

composer.json

"require": {
  "googleads/ad-manager": "^0.16.0"
}

Komut satırı

composer require googleads/ad-manager

Kimlik bilgilerini yapılandırma

PHP istemci kitaplığı, kimlik doğrulaması için OAuth2 ve Uygulama Varsayılan Kimlik Bilgileri'ni (ADC) kullanır.

ADC, kimlik bilgilerini aşağıdaki konumlarda sırayla arar:

  1. GOOGLE_APPLICATION_CREDENTIALS ortam değişkeni.
  2. Google Cloud CLI (gcloud CLI) üzerinden ayarlanan kullanıcı kimlik bilgileri.
  3. 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 hizmette, her REST yöntemi için yöntemleri olan bir ServiceClient nesnesi bulunur. 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; /** * 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 kaynakların örnekleri 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üğe kaydetmek için PSR-3 uyumlu günlükçüleri destekler. Günlük kaydı 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ükçü de 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 ş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 sağlayabileceğiniz benzersiz bir request_id da 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.