Google cung cấp một thư viện ứng dụng PHP để tương tác với API Ad Manager. Bạn nên sử dụng thư viện ứng dụng với Composer.
Để bắt đầu, hãy tạo một dự án mới trong IDE mà bạn chọn hoặc thêm phần phụ thuộc vào một dự án hiện có. Google phát hành cấu phần phần mềm thư viện ứng dụng cho Packagist dưới dạng googleads/ad-manager
.
composer require googleads/ad-manager
Định cấu hình thông tin xác thực
Thư viện ứng dụng PHP sử dụng OAuth2 và Thông tin xác thực mặc định của ứng dụng (ADC) để xác thực.
ADC tìm thông tin xác thực theo thứ tự ở các vị trí sau:
- Biến môi trường
GOOGLE_APPLICATION_CREDENTIALS
. - Thông tin xác thực người dùng được thiết lập thông qua Google Cloud CLI (gcloud CLI).
- Khi chạy trên Google Cloud, tài khoản dịch vụ được đính kèm vào tài nguyên Google Cloud.
Để tạo và định cấu hình thông tin xác thực ADC, hãy xem phần Xác thực.
Tạo yêu cầu đầu tiên
Mỗi dịch vụ có một đối tượng ServiceClient
với các phương thức cho từng phương thức REST. Ví dụ sau đây đọc một đối tượng 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); }
Để biết ví dụ về các phương thức và tài nguyên khác, hãy xem kho lưu trữ GitHub googleapis/php-ads-ad-manager
.
Ghi nhật ký các yêu cầu và phản hồi HTTP
Thư viện ứng dụng PHP hỗ trợ các trình ghi tuân thủ PSR-3 để ghi lại các yêu cầu và phản hồi HTTP. Theo mặc định, tính năng ghi nhật ký sẽ bị tắt.
Để bật tính năng ghi nhật ký mặc định cho đầu ra chuẩn, hãy đặt biến môi trường GOOGLE_SDK_PHP_LOGGING
thành true
trong mã PHP hoặc môi trường của bạn:
putenv('GOOGLE_SDK_PHP_LOGGING=true'); $client = new NetworkServiceClient();
export GOOGLE_SDK_PHP_LOGGING=true
Ngoài ra, bạn có thể truyền bất kỳ trình ghi nhật ký nào tuân thủ PSR-3 khi tạo ứng dụng khách dịch vụ:
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 ]);
Xử lý lỗi
Trong thư viện ứng dụng PHP, tất cả lỗi API Ad Manager đều gửi một ngoại lệ thuộc loại ApiException:
Lỗi phân tích cú pháp
Trường lý do lỗi xác định riêng từng loại lỗi. Sử dụng trường này để xác định cách xử lý lỗi.
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()); }
Lỗi API Ad Manager cũng bao gồm một request_id
duy nhất mà bạn có thể cung cấp cho nhóm hỗ trợ để được trợ giúp khắc phục sự cố. Ví dụ sau đây trích xuất 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']); }
Tạo tên tài nguyên
Thư viện ứng dụng cung cấp các lớp trợ giúp để tạo tên tài nguyên từ mã nhận dạng.
use Google\Ads\AdManager\V1\Client\OrderServiceClient; // Constructs a String in the format: // "networks/{networkCode}/orders/{orderId}" $orderName = OrderServiceClient::orderName("NETWORK_CODE", "ORDER_ID");
Định cấu hình cài đặt proxy
Thư viện ứng dụng PHP tuân theo chế độ cài đặt môi trường HTTP_PROXY
và HTTPS_PROXY
.