服務帳戶

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

「服務帳戶」屬於應用程式,而非個別使用者。服務帳戶可讓網頁應用程式與 Google 服務進行伺服器對伺服器的互動。應用程式會代表服務帳戶呼叫 Google API,因此不會直接牽涉到使用者。

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

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

  • Google API 存取授權是在設定步驟中完成,因此可避免其他需要使用者互動的 OAuth 2.0 流程所造成的複雜情況。

  • 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

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 OAuth 2.0 的聲明流程時,您必須向 Google Workspace 註冊自己的網域。您的應用程式和使用者就能模擬網域中的任何使用者。

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

    以 JSON 格式下載服務帳戶金鑰,並記下服務帳戶 ID。

  2. 將服務帳戶 ID 和 Google Ads API 範圍 (https://www.googleapis.com/auth/adwords) 提供給網域管理員。

    請網域管理員將全網域授權委派給您的服務帳戶。

  3. 如果您是網域管理員,請按照說明中心指示操作。

現在您可以使用服務帳戶,透過 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 組合。這項預防措施可限制攻擊者在服務帳戶金鑰檔案遭盜用時,可存取的資料量。