本指南將說明如何使用服務帳戶存取 Google Ads API。
服務帳戶是屬於應用程式,而非個別使用者的帳戶。服務帳戶可讓網頁應用程式與 Google 服務之間進行伺服器對伺服器的互動。應用程式會代表服務帳戶呼叫 Google API,因此不會直接牽涉到使用者。
服務帳戶採用 OAuth 2.0 流程,不需要人工授權,而是使用只有應用程式可以存取的金鑰檔案。
使用服務帳戶有兩大好處:
您可以透過設定步驟授權 Google API 存取權,因此不必使用需要使用者互動的其他 OAuth 2.0 流程,避免複雜的操作。
OAuth 2.0 斷言流程可讓應用程式在必要時假冒其他使用者。
使用服務帳戶授權的方法有兩種:直接授權或模擬授權。
直接存取帳戶的授權
在這個選項中,您會將 Google Ads 帳戶的直接存取權授予服務帳戶。
帳戶存取權設定
請先建立服務帳戶和憑證。
以 JSON 格式下載服務帳戶金鑰,並記下服務帳戶 ID 和電子郵件地址。
以管理員身分登入 Google Ads 帳戶。依序前往「管理」>「存取權和安全性」。
按一下「使用者」分頁標籤下方的「+」按鈕。
在「Email」輸入框中輸入服務帳戶的電子郵件地址。選取適當的帳戶存取層級,然後按一下「新增帳戶」按鈕。請注意,服務帳戶不支援電子郵件和管理員存取權層級。
服務帳戶已取得存取權。
用戶端程式庫設定
請選取對應於您程式設計語言的分頁,瞭解如何設定用戶端程式庫。
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 Ads 不支援使用服務帳戶,但不模擬服務帳戶。
服務帳戶存取權設定
由於使用者冒用行為只會在網域層級受到控管,因此您必須擁有在 Google Workspace 中註冊的網域,才能使用服務帳戶和斷言流程搭配 Google OAuth 2.0。這樣一來,您的應用程式和使用者就能模擬網域中的任何使用者。
請先建立服務帳戶和憑證。
以 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 集合。這是預防措施,可在服務帳戶的金鑰檔案遭到盜用時,限制攻擊者可存取的資料量。