Google은 Ad Manager API와 상호작용하는 PHP 클라이언트 라이브러리를 제공합니다. Composer와 함께 클라이언트 라이브러리를 사용하는 것이 좋습니다.
시작하려면 원하는 IDE에서 새 프로젝트를 만들거나 기존 프로젝트에 종속 항목을 추가합니다. Google은 클라이언트 라이브러리 아티팩트를 Packagist에 googleads/ad-manager
로 게시합니다.
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; /** * 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_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()); }
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_PROXY
및 HTTPS_PROXY
환경 설정을 따릅니다.