本指南介绍了所有 API 调用的常见结构。
如果您使用客户端库与 API 进行交互,则无需了解底层请求详细信息。不过,在测试和调试时,了解一些 API 调用结构可能会很有用。
Google Ads API 是一种 gRPC API,具有 REST 绑定。这意味着,您可以通过两种方式调用该 API。
首选:
我们的大部分文档都介绍了如何使用 gRPC。
可选:
- 将请求正文创建为 JSON 对象。
- 使用 HTTP 1.1 将其发送到服务器。
- 将响应反序列化为 JSON 对象。
- 解读分析结果。
如需详细了解如何使用 REST,请参阅 REST 接口 指南。
资源标识符
Google Ads API 中的对象使用结构化资源名称和复合标识符进行寻址。
资源名称
API 中的大多数对象都由其资源名称字符串标识。在使用 REST 接口时,这些字符串也充当网址。如需了解其结构,请参阅 REST 接口 资源名称。
复合 ID
如果对象的 ID 不是全局唯一的,则通过在其父级 ID 前面加上波浪号 (~) 来构建该对象的复合 ID。
例如,AdGroupAd 的资源名称模式为 customers/{customer_id}/adGroupAds/{ad_group_id}~{ad_id}。由于其复合标识符结合了父级广告组 ID (ad_group.id) 和底层广告 ID (ad_group_ad.ad.id),因此我们在广告 ID 前面加上广告组 ID:
123的AdGroupId+~+45678的AdId=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字段。 - 合作伙伴:合作伙伴账号(例如第三方应用分析 提供商或数据合作伙伴)。
- 关联的账号:与合作伙伴建立了产品 关联的 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 请求。