PHP

Google מספקת ספריית לקוח ל-PHP לצורך אינטראקציה עם Ad Manager API. מומלץ להשתמש בספריית הלקוח עם Composer.

כדי להתחיל, יוצרים פרויקט חדש בסביבת הפיתוח המשולבת (IDE) שבחרתם או מוסיפים את התלות לפרויקט קיים. Google מפרסמת את הארטיפקטים של ספריות הלקוח ב-Packagist בתור googleads/ad-manager.

composer require googleads/ad-manager

הגדרת פרטי הכניסה

ספריית הלקוח של PHP משתמשת ב-OAuth2 וב-Application Default Credentials (ADC) כדי לבצע אימות.

החיפוש של פרטי הכניסה ב-ADC מתבצע בסדר הבא במיקומים הבאים:

  1. משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS.
  2. פרטי הכניסה של משתמשים שהוגדרו דרך Google Cloud CLI‏ (CLI של gcloud).
  3. כשהאפליקציה פועלת ב-Google Cloud, חשבון השירות שמצורף למשאב ב-Google Cloud.

במאמר אימות מוסבר איך יוצרים ומגדירים את פרטי הכניסה ל-ADC.

שליחת הבקשה הראשונה

לכל שירות יש אובייקט ServiceClient עם שיטות לכל שיטת REST. בדוגמה הבאה קוראים אובייקט 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; /** * 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); }

דוגמאות לשיטות ולמשאבים אחרים זמינות במאגר GitHub‏ googleapis/php-ads-ad-manager.

רישום ביומן של בקשות HTTP ותגובות

ספריית הלקוח של PHP תומכת ביומני PSR-3 שתואמים לרישום ביומן של בקשות HTTP ותשובות. כברירת מחדל, הרישום ביומן מושבת.

כדי להפעיל את רישום האירועים כברירת מחדל לפלט הרגיל, מגדירים את משתנה הסביבה GOOGLE_SDK_PHP_LOGGING לערך true בקוד ה-PHP או בסביבה:

putenv('GOOGLE_SDK_PHP_LOGGING=true');

$client = new NetworkServiceClient();
export GOOGLE_SDK_PHP_LOGGING=true

לחלופין, אפשר להעביר כל מתעד אירועים שתואם ל-PSR-3 בזמן היצירה של לקוח השירות:

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
]);

טיפול בשגיאות

בספריית הלקוח של PHP, כל השגיאות ב-Ad Manager API גורמות להפעלת חריגה מסוג ApiException:

שגיאות ניתוח

השדה 'סיבה לשגיאה' מזהה באופן ייחודי את סוגי השגיאות. השדה הזה משמש לקביעת האופן שבו לטפל בשגיאה.

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 כוללות גם את הערך הייחודי request_id, שאפשר לספק לתמיכה כדי לקבל עזרה בפתרון הבעיה. בדוגמה הבאה מתבצעת החילוץ של 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']);
}

בניית שמות של משאבים

ספריית הלקוח מספקת כיתות עזר ליצירת שמות של משאבים ממזהים.

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

ספריית הלקוח של PHP מתייחסת להגדרות הסביבה HTTP_PROXY ו-HTTPS_PROXY.