Google یک کتابخانه کارخواه PHP برای تعامل با Ad Manager API ارائه میدهد. توصیه میکنیم از کتابخانه کارخواه با Composer استفاده کنید.
برای شروع، پروژه جدیدی در IDE انتخابیتان ایجاد کنید یا وابستگی را به پروژه موجودی اضافه کنید. Google مصنوعات کتابخانه کارخواه را در Packagist با عنوان googleads/ad-manager منتشر میکند.
composer.json
"require": {
"googleads/ad-manager": "^0.16.0"
}
خط فرمان
composer require googleads/ad-manager
پیکربندی اعتبارنامهها
کتابخانه کارخواه PHP از OAuth2 و اعتبارنامههای پیشفرض برنامه (ADC) برای اصالتسنجی استفاده میکند.
ADC بهترتیب در مکانهای زیر بهدنبال اطلاعات کاربری میگردد:
- متغیر محیطی
GOOGLE_APPLICATION_CREDENTIALS. - اعتبارنامه کاربر ازطریق Google Cloud CLI (gcloud CLI) راهاندازی شده است.
- هنگام اجرا در 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; /** * 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 مراجعه کنید.
ثبت درخواستها و پاسخهای اچتیتیپی
کتابخانه کارخواه PHP از ثبتکنندههای سازگار با PSR-3 برای ثبت درخواستها و پاسخهای HTTP پشتیبانی میکند. بهطور پیشفرض، ثبت گزارش غیرفعال است.
برای فعال کردن ثبت پیشفرض در برونداد استاندارد، متغیر محیطی
GOOGLE_SDK_PHP_LOGGING
را در کد PHP یا محیط خود روی true تنظیم کنید:
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");
پیکربندی تنظیمات پروکسی
کتابخانه مشتری PHP از تنظیمات محیطی HTTP_PROXY و HTTPS_PROXY پیروی میکند.