PHP

Google は、Ad Manager API を操作するための PHP クライアント ライブラリを提供しています。Composer でクライアント ライブラリを使用することをおすすめします。

まず、お好みの IDE で新しいプロジェクトを作成するか、既存のプロジェクトに依存関係を追加します。Google は、クライアント ライブラリ アーティファクトを googleads/ad-manager として Packagist に公開します。

composer require googleads/ad-manager

認証情報の構成

PHP クライアント ライブラリは、OAuth2 とアプリケーションのデフォルト認証情報(ADC)を使用して認証を行います。

ADC は次の場所で認証情報を順番に検索します。

  1. GOOGLE_APPLICATION_CREDENTIALS 環境変数。
  2. Google Cloud CLI(gcloud CLI)で設定されたユーザー認証情報。
  3. Google Cloud で実行する場合は、Google Cloud リソースに接続されているサービス アカウント。

ADC 認証情報の作成と構成については、認証をご覧ください。

最初のリクエストを送信する

各サービスには、各 REST メソッドのメソッドを含む ServiceClient オブジェクトがあります。次の例では、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 クライアント ライブラリは、HTTP リクエストとレスポンスをロギングするための PSR-3 準拠のロガーをサポートしています。デフォルトでは、ロギングは無効になっています。

標準出力へのデフォルトのロギングを有効にするには、PHP コードまたは環境で環境変数 GOOGLE_SDK_PHP_LOGGINGtrue に設定します。

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());
}

アド マネージャー 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']);
}

リソース名を作成する

クライアント ライブラリには、ID からリソース名を構築するためのヘルパー クラスが用意されています。

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 環境設定を尊重します。