API 呼叫結構

本指南說明所有 API 呼叫的常見結構。

如果您使用用戶端程式庫與 API 互動,就不需要瞭解基礎要求詳細資料。不過,在測試和偵錯時,瞭解 API 呼叫結構會很有幫助。

Google Ads API 是 gRPC API,具有 REST 繫結。也就是說,您可以透過兩種方式呼叫 API。

建議採用:

  1. 以通訊協定緩衝區的形式建立要求主體。
  2. 使用 HTTP/2 將要求傳送至伺服器。
  3. 將回應反序列化為通訊協定緩衝區。
  4. 解讀結果。

我們的說明文件大多說明如何使用 gRPC。

選用:

  1. 以 JSON 物件的形式建立要求主體。
  2. 使用 HTTP 1.1 傳送至伺服器。
  3. 將回應反序列化為 JSON 物件。
  4. 解讀結果。

如要進一步瞭解如何使用 REST,請參閱 REST 介面指南。

資源 ID

Google Ads API 中的物件是使用結構化資源名稱和複合 ID 定址。

資源名稱

API 中的大多數物件都是透過資源名稱字串識別。使用 REST 介面時,這些字串也會做為網址。如要瞭解 REST 介面的結構,請參閱資源名稱。

複合 ID

如果物件的 ID 並非全域不重複,系統會在其父項 ID 前面加上波浪號 (~),為該物件建構複合 ID。

舉例來說,AdGroupAd 的資源名稱模式為 customers/{customer_id}/adGroupAds/{ad_group_id}~{ad_id}。由於複合 ID 結合了上層廣告群組 ID (ad_group.id) 和基礎廣告 ID (ad_group_ad.ad.id),因此我們會在廣告 ID 前面加上廣告群組 ID:

  • AdGroupId 的 123 + ~ + AdId 的 45678 = 複合廣告群組廣告 ID 123~45678。

要求標頭

以下是要求中隨附於主體的 HTTP 標頭 (或 gRPC 中繼資料):

授權

您必須加入 Authorization: Bearer YOUR_ACCESS_TOKEN 格式的 OAuth 2.0 存取權杖,用來識別代表客戶的直屬管理員帳戶,或直接管理自身帳戶的廣告主。如需擷取存取權杖的操作說明,請參閱 OAuth2 指南。存取權杖在取得後一小時內有效;過期後,請重新整理存取權杖,以擷取新的權杖。請注意,用戶端程式庫會自動重新整理過期的權杖。

如果遇到授權錯誤,請確認您使用的是正確的憑證,且具備足夠的權限。USER_PERMISSION_DENIED 錯誤表示已驗證的使用者可能無法存取要求中指定的客戶帳戶。如果您的 Google Cloud 雲端專案僅獲准存取 Test,而您傳送了針對正式版帳戶的要求,則 API 會在 v25 及更新版本中傳回 AuthorizationError.CLOUD_PROJECT_NOT_APPROVED_FOR_PRODUCTION (或在 v24 及更早版本中傳回 AuthorizationError.ACTION_NOT_PERMITTED)。如要進一步瞭解如何管理權限,請參閱「Google Ads 存取層級」。

login-customer-id

這是要求中使用的授權客戶 ID,不含連字號 (-)。如果您是透過管理員帳戶存取客戶帳戶,則必須提供這個標頭,且必須設為管理員帳戶的客戶 ID。透過管理員帳戶驗證時,如果未加入 login-customer-id,會導致 AuthorizationError.USER_PERMISSION_DENIED 錯誤。如要進一步瞭解這類錯誤,請參閱常見錯誤。如要進一步瞭解帳戶存取權的解析方式,請參閱 OAuth 存取模型指南。

https://googleads.googleapis.com/v26/customers/1234567890/campaignBudgets:mutate

設定 login-customer-id 相當於在 Google Ads 使用者介面中登入後選擇帳戶,或按一下右上方的個人資料圖片。如未加入這個標頭,系統會預設為操作客戶。

linked-customer-id

這個標頭為必要,由合作夥伴 (例如第三方應用程式分析供應商或資料合作夥伴) 在連結的 Google Ads 帳戶上執行動作時使用。這個標頭必須指定具有產品連結的 Google Ads 帳戶客戶 ID。

假設合作夥伴需要根據產品連結,對 Google Ads 帳戶發出 API 呼叫。

  • 廣告主:由 API 呼叫管理或更新的 Google Ads 帳戶。 要求中會指定廣告主帳戶 ID。在 REST 中,這是 customerId 路徑參數 (例如 customers/1111111111/...);在 gRPC 中,這是要求中的 customer_id 欄位。
  • Partner:合作夥伴帳戶 (例如第三方應用程式分析供應商或資料合作夥伴)。
  • 已連結帳戶:與合作夥伴建立產品連結的 Google Ads 帳戶,可授予合作夥伴存取廣告主的權限。

有權存取合作夥伴帳戶的使用者,可發出 API 呼叫,對廣告主帳戶中的實體執行操作 (例如上傳轉換或管理使用者名單)。已連結帳戶可以是廣告主帳戶本身,也可以是廣告主帳戶的管理員帳戶。

要求標頭必須設定如下:

  • Authorization:有權存取合作夥伴的 OAuth 2.0 使用者存取權杖。
  • login-customer-id:合作夥伴帳戶的客戶 ID。通過驗證的使用者必須具備這個帳戶的存取權。
  • linked-customer-id:已連結帳戶的客戶 ID。這個標頭表示這項要求的授權取決於已連結帳戶與合作夥伴的產品連結。

連結情境有兩種:

  • 如果廣告主帳戶與合作夥伴帳戶有直接產品連結,則已連結帳戶為廣告主,且 linked-customer-id 必須設為廣告主帳戶的客戶 ID。
  • 如果廣告主帳戶是由與合作夥伴帳戶有產品連結的管理員帳戶管理,則已連結帳戶為管理員帳戶,且 linked-customer-id 必須設為管理員的客戶 ID。

範例 1:直接連結

如果廣告主帳戶 1111111111 與合作夥伴帳戶 2222222222 直接連結,且 API 呼叫指定 customers/1111111111/...:

Authorization: Bearer YOUR_ACCESS_TOKEN
login-customer-id: 2222222222
linked-customer-id: 1111111111

範例 2:管理員連結

如果廣告主帳戶 1111111111 由管理員帳戶 3333333333 管理,管理員帳戶 3333333333 與合作夥伴帳戶 2222222222 連結,且 API 呼叫指定 customers/1111111111/...:

Authorization: Bearer YOUR_ACCESS_TOKEN
login-customer-id: 2222222222
linked-customer-id: 3333333333

回應標頭

下列標頭 (或 gRPC 結尾中繼資料) 會與回應主體一併傳回。建議您記錄這些值,以便偵錯。

request-id

request-id 是用於識別這項要求的專屬字串。與支援團隊聯絡時,請提供這個值,協助排解失敗或非預期的 API 要求。