PHP

Google은 Ad Manager API와 상호작용하는 PHP 클라이언트 라이브러리를 제공합니다. Composer와 함께 클라이언트 라이브러리를 사용하는 것이 좋습니다.

시작하려면 원하는 IDE에서 새 프로젝트를 만들거나 기존 프로젝트에 종속 항목을 추가합니다. Google은 클라이언트 라이브러리 아티팩트를 Packagist에 googleads/ad-manager로 게시합니다.

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

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']);
}

리소스 이름 구성

클라이언트 라이브러리는 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_PROXYHTTPS_PROXY 환경 설정을 따릅니다.