PHP

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 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 xuất bản các cấu phần phần mềm thư viện ứng dụng lên Packagist dưới dạng googleads/ad-manager.

composer.json

"require": {
  "googleads/ad-manager": "^0.14.0"
}

Dòng lệnh

composer require googleads/ad-manager

Định cấu hình thông tin đăng nhập

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 kiếm thông tin đăng nhập theo thứ tự ở các vị trí sau:

  1. Biến môi trường GOOGLE_APPLICATION_CREDENTIALS.
  2. Thông tin đăng nhập của người dùng được thiết lập thông qua Google Cloud CLI (gcloud CLI).
  3. Khi chạy trên Google Cloud, tài khoản dịch vụ sẽ được đính kèm vào tài nguyên Google Cloud.

Để tạo và định cấu hình thông tin đăng nhập ADC, hãy xem phần Xác thực.

Tạo yêu cầu đầu tiên

Mỗi dịch vụ đều 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; /** * 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); }

Để 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 nhật ký tuân thủ PSR-3 để ghi nhật ký 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 vào đầ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 một ứ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ả các lỗi API Ad Manager đều đưa ra một ngoại lệ thuộc loại ApiException:

Lỗi phân tích cú pháp

Trường lý do gây ra lỗi xác định riêng biệt các 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 Ad Manager API 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 các chế độ cài đặt môi trường HTTP_PROXY và HTTPS_PROXY.