Google מספקת ספריית לקוח PHP לאינטראקציה עם Ad Manager API. מומלץ להשתמש בספריית הלקוח עם Composer.
כדי להתחיל, יוצרים פרויקט חדש בסביבת הפיתוח המשולבת (IDE) שבחרתם או מוסיפים את התלות לפרויקט קיים. Google מפרסמת ארטיפקטים של ספריות לקוח ב-Packagist בתור googleads/ad-manager.
composer.json
"require": {
"googleads/ad-manager": "^0.14.0"
}
שורת הפקודה
composer require googleads/ad-manager
הגדרת פרטי כניסה
ספריית הלקוח של PHP משתמשת ב-OAuth2 וב-Application Default Credentials (ADC) לצורך אימות.
החיפוש של פרטי הכניסה ב-ADC מתבצע בסדר הבא:
- משתנה הסביבה
GOOGLE_APPLICATION_CREDENTIALS. - פרטי כניסה של משתמשים שהוגדרו באמצעות ה-CLI של gcloud (ה-CLI של gcloud).
- כשמריצים ב-Google Cloud, חשבון השירות שמצורף למשאב ב-Google Cloud.
במאמר אימות מוסבר איך ליצור ולהגדיר את פרטי הכניסה של ADC.
שליחת הבקשה הראשונה
לכל שירות יש אובייקט ServiceClient עם methods לכל method של 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; /** * 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); }
דוגמאות לשיטות ולמשאבים אחרים זמינות במאגר GitHub googleapis/php-ads-ad-manager.
רישום ביומן של בקשות ותשובות HTTP
ספריית הלקוח PHP תומכת ב-loggers שתואמים ל-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.