Google は、Ad Manager API とのやり取りに使用できる PHP クライアント ライブラリを提供しています。Composer でクライアント ライブラリを使用することをおすすめします。
まず、お好みの IDE で新しいプロジェクトを作成するか、既存のプロジェクトに依存関係を追加します。Google は、クライアント ライブラリ アーティファクトを googleads/ad-manager として Packagist に公開します。
composer.json
"require": {
"googleads/ad-manager": "^0.14.0"
}
コマンドライン
composer require googleads/ad-manager
認証情報の構成
PHP クライアント ライブラリは、OAuth2 とアプリケーションのデフォルト認証情報(ADC)を使用して認証を行います。
ADC は、次の場所で認証情報を順に検索します。
GOOGLE_APPLICATION_CREDENTIALS環境変数。- Google Cloud CLI(gcloud CLI)を使用して設定されたユーザー認証情報。
- 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; /** * 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); }
他のメソッドとリソースの例については、GitHub リポジトリ googleapis/php-ads-ad-manager をご覧ください。
HTTP リクエストとレスポンスをログに記録する
PHP クライアント ライブラリは、HTTP リクエストとレスポンスのロギング用に PSR-3 準拠のロガーをサポートしています。デフォルトでは、ロギングは無効になっています。
標準出力へのデフォルトのロギングを有効にするには、PHP コードまたは環境で環境変数 GOOGLE_SDK_PHP_LOGGING を 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()); }
アド マネージャー 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 の環境設定を尊重します。