PHP

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:

  1. GOOGLE_APPLICATION_CREDENTIALS ortam değişkeni.
  2. Google Cloud KSA (gcloud KSA) üzerinden ayarlanan kullanıcı kimlik bilgileri.
  3. 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.