서비스 계정 워크플로

이 가이드에서는 서비스 계정으로 Google Ads API에 액세스하는 방법을 설명합니다.

서비스 계정은 개별 최종 사용자가 아닌 앱에 속한 계정입니다. 서비스 계정은 사람의 승인이 필요하지 않은 OAuth 2.0 플로우를 사용하며, 대신 앱만 액세스할 수 있는 키 파일을 사용합니다.

서비스 계정을 사용하면 다음과 같은 두 가지 주요 이점이 있습니다.

  • Google Ads 계정에 대한 Google Ads API 액세스 권한 부여는 Google Ads UI에서 제공하는 승인 및 계정 관리 기능을 활용하여 구성 단계로 이루어집니다. 이렇게 하면 개발자가 OAuth 2.0 흐름을 빌드하고 사용자 상호작용, 사용자 인증 정보 저장, 토큰 관리와 관련된 복잡한 문제를 처리하지 않아도 되므로 개발자의 노력을 절약할 수 있습니다.

  • Google Ads 계정 액세스 권한 부여는 개별 사용자 사용자 인증 정보와 연결되지 않으므로 액세스를 처음 승인한 직원이 팀이나 회사를 떠나더라도 액세스가 계속되도록 해야 하는 경우에 유용할 수 있습니다.

계정 액세스 설정

  1. 먼저 서비스 계정 및 사용자 인증 정보를 만듭니다.

    JSON 형식으로 서비스 계정 키를 다운로드하고 서비스 계정 ID와 이메일을 기록합니다.

  2. 관리자로 Google Ads 계정에 로그인합니다. 관리 > 액세스 및 보안으로 이동합니다.

  3. 사용자 탭에서 + 버튼을 클릭합니다.

  4. 이메일 입력 상자에 서비스 계정 이메일을 입력합니다. 적절한 계정 액세스 수준을 선택하고 (서비스 계정은 이메일 전용 액세스 수준을 지원하지 않음) 계정 추가 버튼을 클릭합니다.

  5. 서비스 계정에 액세스 권한이 부여됩니다.

  6. 선택사항: 기본적으로 서비스 계정에 관리자 액세스 권한을 부여할 수 없습니다. 최소 권한의 원칙을 따르고 API 호출에 필요한 경우에만 관리자 액세스 권한을 부여합니다. 다음과 같이 액세스 권한을 업그레이드할 수 있습니다.

    • 액세스 수준 열에서 서비스 계정의 액세스 수준 옆에 있는 드롭다운 화살표를 클릭합니다.
    • 드롭다운 목록에서 관리자를 선택합니다.

클라이언트 라이브러리 구성

클라이언트 라이브러리 구성 방법에 관한 안내는 프로그래밍 언어에 해당하는 탭을 선택하세요. 서비스 계정이 Google Ads 관리자 계정 (MCC)을 통해 고객 계정에 액세스하는 경우 login-customer-id(또는 loginCustomerId)도 하이픈 없이 해당 관리자 계정의 10자리 고객 ID로 설정합니다 (로그인 고객 ID 참고).

자바

구성에서 비공개 키 JSON 경로를 설정합니다. ads.properties 파일을 사용하는 경우 다음을 추가합니다.

api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH

자세한 내용은 구성 가이드를 참고하세요.

.NET

GoogleAdsConfig 인스턴스에서 OAuth2Mode 및 OAuth2SecretsJsonPath를 설정하고 이를 사용하여 GoogleAdsClient 객체를 초기화합니다.

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
    OAuth2SecretsJsonPath = "JSON_KEY_FILE_PATH",
    // ...
};
GoogleAdsClient client = new GoogleAdsClient(config);

자세한 내용은 구성 가이드를 참고하세요.

Python

구성에서 비공개 키 JSON 경로를 설정합니다. google-ads.yaml 파일, YAML 문자열 또는 dict을 사용하는 경우 다음을 추가합니다.

json_key_file_path: JSON_KEY_FILE_PATH

환경 변수를 사용하는 경우 Bash 구성 또는 환경에 다음을 추가합니다.

export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH

자세한 내용은 구성 가이드를 참고하세요.

PHP

google_ads_php.ini 파일에서 다음 키를 구성합니다.

[OAUTH2]
; For service account flow.
jsonKeyFilePath = "JSON_KEY_FILE_PATH"
scopes = "https://www.googleapis.com/auth/adwords"

자세한 내용은 구성 가이드를 참고하세요.

Ruby

google_ads_config.rb에서 다음 키를 구성합니다.

c.keyfile = 'JSON_KEY_FILE_PATH'

자세한 내용은 구성 가이드를 참고하세요.

Perl

구성에서 비공개 키 JSON 경로를 설정합니다. googleads.properties 파일을 사용하는 경우 다음을 추가합니다.

jsonKeyFilePath=JSON_KEY_FILE_PATH

환경 변수를 사용하는 경우 Bash 구성 또는 환경에 다음을 추가합니다.

export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH

자세한 내용은 구성 가이드를 참고하세요.

curl

먼저 gcloud CLI에서 서비스 계정을 활성 사용자 인증 정보로 설정합니다.

gcloud auth login --cred-file=JSON_KEY_FILE_PATH

그런 다음 Google Ads API의 OAuth 2.0 액세스 토큰을 가져옵니다.

gcloud auth \
  print-access-token \
  --scopes='https://www.googleapis.com/auth/adwords'

이제 API 호출에서 액세스 토큰을 사용할 수 있습니다. 다음 예에서는 GoogleAdsService.SearchStream 메서드를 사용하여 계정의 캠페인을 가져와 캠페인 보고서를 실행하는 방법을 보여줍니다. 이 가이드에서는 보고에 관한 세부정보를 다루지 않습니다.

curl -i -X POST \
  https://googleads.googleapis.com/v25/customers/CUSTOMER_ID/googleAds:searchStream \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "login-customer-id: LOGIN_CUSTOMER_ID" \
  --data-binary "@query.json"

query.json의 내용은 다음과 같습니다.

{
  "query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}