گوگل یک کتابخانه کلاینت PHP برای تعامل با رابط برنامهنویسی کاربردی (API) مدیریت تبلیغات (Ad Manager) ارائه میدهد. ما استفاده از کتابخانه کلاینت را به همراه Composer توصیه میکنیم.
برای شروع، یک پروژه جدید در IDE مورد نظر خود ایجاد کنید یا وابستگی را به یک پروژه موجود اضافه کنید. گوگل مصنوعات کتابخانه کلاینت را به Packagist با نام googleads/ad-manager منتشر میکند.
آهنگساز.json
"require": {
"googleads/ad-manager": "^0.14.0"
}
خط فرمان
composer require googleads/ad-manager
پیکربندی اعتبارنامهها
کتابخانه کلاینت PHP از OAuth2 و Application Default Credentials (ADC) برای احراز هویت استفاده میکند.
ADC به ترتیب در مکانهای زیر به دنبال اعتبارنامهها میگردد:
- متغیر محیطی
GOOGLE_APPLICATION_CREDENTIALS. - اعتبارنامههای کاربر از طریق رابط خط فرمان گوگل کلود (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); }
برای مثالهایی از روشها و منابع دیگر، به مخزن گیتهاب googleapis/php-ads-ad-manager مراجعه کنید.
ثبت درخواستها و پاسخهای HTTP
کتابخانه کلاینت 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
از طرف دیگر، میتوانید هنگام ساخت یک سرویس کلاینت، هر logger سازگار با 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، تمام خطاهای 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()); }
خطاهای 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 پشتیبانی میکند.