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,方法是在物件的 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 則以上) = 複合廣告群組 123~45678 的廣告 ID。

要求標頭

以下是要求中隨附於主體的 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 要求。