服務帳戶

本指南將說明如何使用服務帳戶存取 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. 在「Email」輸入框中輸入服務帳戶的電子郵件地址。選取適當的帳戶存取層級,然後按一下「新增帳戶」按鈕。請注意,服務帳戶不支援電子郵件和管理員存取權層級。

  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 Workspace 網域,例如 mydomain.commybusiness.com

  • Google Ads API 開發人員符記,以及選用的測試帳戶

  • 您使用的語言的用戶端程式庫

  • 為 Google Ads API 設定的 Google API 控制台專案

  • 在您要存取的 Google Ads 帳戶中,具備權限的 Google Ads 使用者。 Google Ads 不支援使用服務帳戶,但不模擬服務帳戶。

服務帳戶存取權設定

由於使用者冒用行為只會在網域層級受到控管,因此您必須擁有在 Google Workspace 中註冊的網域,才能使用服務帳戶和斷言流程搭配 Google OAuth 2.0。這樣一來,您的應用程式和使用者就能模擬網域中的任何使用者。

  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 集合。這是預防措施,可在服務帳戶的金鑰檔案遭到盜用時,限制攻擊者可存取的資料量。