本指南將說明如何透過服務帳戶存取 Google Ads API。
「服務帳戶」屬於應用程式,而非個別使用者。服務帳戶可讓網頁應用程式與 Google 服務進行伺服器對伺服器的互動。應用程式會代表服務帳戶呼叫 Google API,因此不會直接牽涉到使用者。
服務帳戶採用 OAuth 2.0 流程,不需要人工授權,而是使用只有您的應用程式可以存取的金鑰檔案。
使用服務帳戶有兩大好處:
Google API 存取授權是在設定步驟中完成,因此可避免其他需要使用者互動的 OAuth 2.0 流程所造成的複雜情況。
OAuth 2.0 聲明流程可讓應用程式在必要時模擬其他使用者。
您可以使用服務帳戶授權,方法有兩種:直接授權或模擬授權 (不建議)。
[建議] 授權直接存取帳戶
使用這個選項時,您會授予服務帳戶直接存取 Google Ads 帳戶的權限。
設定帳戶存取權
首先,請建立服務帳戶和憑證。
以 JSON 格式下載服務帳戶金鑰,並記下服務帳戶 ID 和電子郵件地址。
以管理員身分登入 Google Ads 帳戶。依序前往「管理」>「存取權和安全性」。
按一下「使用者」分頁標籤下方的「+」按鈕。
在「電子郵件」輸入方塊中輸入服務帳戶電子郵件地址。選取適當的帳戶存取層級,然後按一下「新增帳戶」按鈕。請注意,服務帳戶不支援「電子郵件」和「管理員」存取層級。
服務帳戶已取得存取權。
用戶端程式庫設定
選取程式設計語言對應的分頁,查看如何設定用戶端程式庫的說明。
Java
在設定中設定私密金鑰 JSON 路徑。如果您使用 ads.properties
檔案,請新增下列程式碼:
api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH
詳情請參閱設定指南。
.NET
在 App.config / Web.config
中設定下列鍵。詳情請參閱設定指南。
<add key="OAuth2Mode" value="SERVICE_ACCOUNT" />
<add key="OAuth2SecretsJsonPath" value="JSON_KEY_FILE_PATH" />
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"
小茹
在 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
[不建議] 使用模擬身分進行授權
在這個選項中,您會使用服務帳戶模擬可存取 Google Ads 帳戶的使用者。這種做法僅適用於 Google Workspace 客戶。服務帳戶只能模擬相同 Google Workspace 中的使用者 (電子郵件地址)。
必要條件
您擁有的 Google Workspace 網域,例如
mydomain.com
或mybusiness.com
Google Ads API 開發人員符記,以及 (選用) 測試帳戶
您所用語言的用戶端程式庫
已設定 Google Ads API 的 Google API 控制台專案
具有您要存取 Google Ads 帳戶權限的 Google Ads 使用者。
設定服務帳戶存取權
由於使用者模擬功能僅在網域層級受到控管,因此使用服務帳戶和 Google OAuth 2.0 的聲明流程時,您必須向 Google Workspace 註冊自己的網域。您的應用程式和使用者就能模擬網域中的任何使用者。
首先,請建立服務帳戶和憑證。
以 JSON 格式下載服務帳戶金鑰,並記下服務帳戶 ID。
將服務帳戶 ID 和 Google Ads API 範圍 (
https://www.googleapis.com/auth/adwords
) 提供給網域管理員。請網域管理員將全網域授權委派給您的服務帳戶。
如果您是網域管理員,請按照說明中心指示操作。
現在您可以使用服務帳戶,透過 OAuth 2.0 聲明流程存取 Google Ads 帳戶。
用戶端程式庫設定
選取程式設計語言對應的分頁,查看如何設定用戶端程式庫的說明。
Java
在設定中設定私密金鑰 JSON 路徑,並委派帳戶 ID。如果您使用 ads.properties
檔案,請新增下列程式碼:
api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH
api.googleads.serviceAccountUser=IMPERSONATED_EMAIL
詳情請參閱設定指南。
.NET
在 App.config / Web.config
中設定下列鍵。詳情請參閱設定指南。
<add key="OAuth2Mode" value="SERVICE_ACCOUNT" />
<add key="OAuth2SecretsJsonPath" value="JSON_KEY_FILE_PATH" />
<!-- Supply the email address of the user to impersonate. -->
<add key="OAuth2PrnEmail" value="IMPERSONATED_EMAIL" />
Python
在設定中設定私密金鑰 JSON 路徑和模擬電子郵件地址。
如果您使用 google-ads.yaml file
、YAML 字串或 dict
,請新增下列項目:
json_key_file_path: JSON_KEY_FILE_PATH
impersonated_email: IMPERSONATED_EMAIL
如果您使用環境變數,請在 Bash 設定或環境中新增下列項目:
export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH
export GOOGLE_ADS_IMPERSONATED_EMAIL=IMPERSONATED_EMAIL
PHP
在 google_ads_php.ini
中設定下列鍵。詳情請參閱設定指南。
; For service account flow.
jsonKeyFilePath = "JSON_KEY_FILE_PATH"
scopes = "https://www.googleapis.com/auth/adwords"
impersonatedEmail = "IMPERSONATED_EMAIL"
小茹
在 google_ads_config.rb
中設定下列鍵。
c.keyfile = 'JSON_KEY_FILE_PATH'
c.impersonate = 'IMPERSONATED_EMAIL'
Perl
在設定中設定私密金鑰 JSON 路徑,並委派帳戶 ID。如果您使用 googleads.properties
檔案,請新增下列程式碼:
jsonKeyFilePath=JSON_KEY_FILE_PATH
impersonatedEmail=IMPERSONATED_EMAIL
如果您使用環境變數,請在 Bash 設定或環境中新增下列項目:
export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH
export GOOGLE_ADS_IMPERSONATED_EMAIL=IMPERSONATED_EMAIL
安全疑慮
由於服務帳戶對 Google Workspace 網域具有網域層級的委派控制權,因此請務必保護金鑰檔案,確保服務帳戶只能存取已授權的 Google 服務。由於該服務帳戶可以模擬網域中的任何使用者,因此這點尤其重要。
另一項最佳做法是只允許服務帳戶存取最低必要 API 組合。這項預防措施可限制攻擊者在服務帳戶金鑰檔案遭盜用時,可存取的資料量。