گوگل یک کتابخانه کلاینت PHP برای تعامل با Ad Manager API فراهم می کند. توصیه می کنیم از کتابخانه مشتری با Composer استفاده کنید.
برای شروع، یک پروژه جدید در IDE مورد نظر خود ایجاد کنید یا وابستگی را به پروژه موجود اضافه کنید. Google مصنوعات کتابخانه مشتری را بهعنوان googleads/ad-manager
برای Packagist منتشر میکند.
composer require googleads/ad-manager
اعتبارنامه ها را پیکربندی کنید
کتابخانه مشتری PHP برای احراز هویت از OAuth2 و Application Default Credentials (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; /** * 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
در کد 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
احترام می گذارد.