服務帳戶工作流程

本指南將說明如何透過服務帳戶存取 Google Ads API。

「服務帳戶」屬於應用程式,而非個別使用者。服務帳戶採用 OAuth 2.0 流程,不需要人工授權,而是使用只有您的應用程式可以存取的金鑰檔案。

使用服務帳戶有兩大好處:

  • Google Ads API 存取 Google Ads 帳戶的授權作業,是透過 Google Ads 使用者介面提供的授權和帳戶管理功能完成,屬於設定步驟。這樣一來,開發人員就不必建構 OAuth 2.0 流程,也不必處理涉及使用者互動、儲存使用者憑證等複雜問題,可節省許多心力。

  • Google Ads 帳戶的存取授權與個別使用者憑證無關,因此即使原先授權存取權的員工離開團隊或公司,授權仍可繼續有效。

設定帳戶存取權

  1. 首先,請建立服務帳戶和憑證

    以 JSON 格式下載服務帳戶金鑰,並記下服務帳戶 ID 和電子郵件地址。

  2. 以管理員身分登入 Google Ads 帳戶。依序前往「管理」>「存取權和安全性」

  3. 按一下「使用者」分頁標籤下方的「+」按鈕。

  4. 在「電子郵件」輸入方塊中輸入服務帳戶電子郵件地址。選取適當的帳戶存取層級,然後按一下「新增帳戶」按鈕。請注意,服務帳戶不支援電子郵件和管理員存取層級。

  5. 服務帳戶已取得存取權。

用戶端程式庫設定

選取程式設計語言對應的分頁,即可查看如何設定用戶端程式庫的說明。

Java

在設定中設定私密金鑰 JSON 路徑。如果您使用 ads.properties 檔案,請新增下列程式碼:

api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH

詳情請參閱設定指南

.NET

GoogleAdsConfig 例項上設定 OAuth2ModeOAuth2SecretsJsonPath,並使用該例項初始化 GoogleAdsClient 物件。

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

詳情請參閱設定指南

Python

在設定中設定私密金鑰 JSON 路徑。如果您使用 google-ads.yaml file、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 中設定下列鍵。詳情請參閱設定指南

; 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 路徑,並委派帳戶 ID。如果您使用 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=PATH_TO_CREDENTIALS_JSON

接著,擷取 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/v21/customers/CUSTOMER_ID/googleAds:searchStream \
   -H "Content-Type: application/json" \
   -H "Authorization: Bearer ACCESS_TOKEN" \
   -H "developer-token: DEVELOPER_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"
}