本指南將說明如何透過服務帳戶存取 Google Ads API。
「服務帳戶」屬於應用程式,而非個別使用者。服務帳戶採用 OAuth 2.0 流程,不需要人工授權,而是使用只有您的應用程式可以存取的金鑰檔案。
使用服務帳戶有兩大好處:
Google Ads API 存取 Google Ads 帳戶的授權作業,是透過 Google Ads 使用者介面提供的授權和帳戶管理功能完成,屬於設定步驟。這樣一來,開發人員就不必建構 OAuth 2.0 流程,也不必處理涉及使用者互動、儲存使用者憑證等複雜問題,可節省許多心力。
Google Ads 帳戶的存取授權與個別使用者憑證無關,因此即使原先授權存取權的員工離開團隊或公司,授權仍可繼續有效。
設定帳戶存取權
首先,請建立服務帳戶和憑證。
以 JSON 格式下載服務帳戶金鑰,並記下服務帳戶 ID 和電子郵件地址。
以管理員身分登入 Google Ads 帳戶。依序前往「管理」>「存取權和安全性」。
按一下「使用者」分頁標籤下方的「+」按鈕。
在「電子郵件」輸入方塊中輸入服務帳戶電子郵件地址。選取適當的帳戶存取層級,然後按一下「新增帳戶」按鈕。請注意,服務帳戶不支援電子郵件和管理員存取層級。
服務帳戶已取得存取權。
用戶端程式庫設定
選取程式設計語言對應的分頁,即可查看如何設定用戶端程式庫的說明。
Java
在設定中設定私密金鑰 JSON 路徑。如果您使用 ads.properties
檔案,請新增下列程式碼:
api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH
詳情請參閱設定指南。
.NET
在 GoogleAdsConfig
例項上設定 OAuth2Mode
和 OAuth2SecretsJsonPath
,並使用該例項初始化 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"
}