授权和 HTTP 标头

调用 Google Ads API 时,您需要 OAuth 2.0 凭证。如果您使用 Google Ads 经理账号进行 API 调用,则还需要在每个请求中指定 login-customer-id 标头。本页面介绍了如何设置这些值,并记录了在使用 REST 接口时发送和接收的其他几个特定于 API 的 HTTP 标头。

OAuth 2.0 凭证

Google Ads API 使用 OAuth 2.0 授权 API 请求。系统同时支持 OAuth 2.0 用户身份验证流程和服务账号流程。如需了解详情,请参阅 Google Ads API 中的 OAuth 2.0。

如果您不熟悉 Google API,可以使用 gcloud 命令行工具或 OAuth 2.0 Playground 试用 OAuth 2.0 凭据和 Google Ads API,然后再为应用编写代码。

我们建议您使用 https://oauth.net/code/ 上提供的 OAuth 2.0 库之一来实现 OAuth 2.0 授权工作流。不过,我们列出了 curl 指令,以防您需要自行实现。

服务账号

按照相关步骤为 Google Ads API 配置 Google Cloud 项目。记录服务账号电子邮件地址和服务账号密钥。接下来,按照服务账号指南中的常见说明设置服务账号,以访问您的 Google Ads 账号。

用户身份验证

按照相关步骤为 Google Ads API 配置 Google Cloud 控制台项目。记录客户端 ID 和客户端密钥。接下来,请按照桌面应用流程说明或 Web 应用流程说明生成刷新令牌和访问令牌。用于 Google Ads API 访问权限的 scope 为 https://www.googleapis.com/auth/adwords。

生成新的访问令牌

服务账号

获得服务账号电子邮件地址和服务账号密钥后,请按照为“服务器到服务器”应用使用 OAuth 2.0 指南生成 JWT 声明集,然后可以交换该声明集以获取 OAuth 2.0 访问令牌。请务必在按照指南操作时选择 HTTP/REST 标签页。用于访问 Google Ads API 的 OAuth 2.0 scope 为 https://www.googleapis.com/auth/adwords。此外,您可以在构建 JWT 声明集时跳过 sub 参数,因为设置步骤会向服务账号授予对 Google Ads 账号的直接访问权限,从而避免需要模拟 Google Ads 用户。

然后,您可以在对 Google Ads API 的每个 API 调用的 Authorization HTTP 标头中使用访问令牌:

GET /v26/customers:listAccessibleCustomers HTTP/1.1
Host: googleads.googleapis.com
Authorization: Bearer ACCESS_TOKEN

用户身份验证

获得 OAuth 2.0 客户端 ID、客户端密钥和刷新令牌后,您可以使用 curl 命令行工具生成新的访问令牌,以便在 API 调用中使用:

curl \
  --data "grant_type=refresh_token" \
  --data "client_id=CLIENT_ID" \
  --data "client_secret=CLIENT_SECRET" \
  --data "refresh_token=REFRESH_TOKEN" \
  https://www.googleapis.com/oauth2/v3/token

然后,您可以在对 Google Ads API 的每次 API 调用的 Authorization HTTP 标头中使用 curl 请求返回的访问令牌:

GET /v26/customers:listAccessibleCustomers HTTP/1.1
Host: googleads.googleapis.com
Authorization: Bearer ACCESS_TOKEN

请求标头

以下部分介绍了向 Google Ads API 发出请求时所需或使用的 HTTP 标头。

登录客户 ID

对于经理账号向客户账号发出的 Google Ads API 调用(即以经理账号身份登录,向其某个客户账号发出 API 调用),您还需要提供 login-customer-id HTTP 标头。此值表示发出 API 调用的经理的 Google Ads 客户 ID。

添加此标头相当于在登录后在 Google Ads 界面中选择账号,或点击页面右上角的个人资料图片。指定客户 ID 时,请务必移除所有连字符 (-)。例如:1234567890,而不是 123-456-7890。如需详细了解登录客户 ID,请参阅 Google Ads 访问权限模型指南。

GET /v26/customers:listAccessibleCustomers HTTP/1.1
Host: googleads.googleapis.com
Authorization: Bearer ACCESS_TOKEN
login-customer-id: MANAGER_CUSTOMER_ID

关联的客户 ID

合作伙伴(例如第三方应用分析工具提供商或数据合作伙伴)在对关联的 Google Ads 账号执行操作时,会使用“关联的客户 ID”标头。如需了解详情,请参阅 API 调用结构指南。

Authorization: Bearer ACCESS_TOKEN
login-customer-id: PARTNER_CUSTOMER_ID
linked-customer-id: ADVERTISER_CUSTOMER_ID

响应标头

API 的 HTTP 响应中会返回以下标头。

请求 ID

request-id 是一个字符串,用于唯一标识 API 请求。在调试或排查特定 API 调用问题时,request-id 是一个重要的标识符,在联系 Google 开发者支持团队时,请务必提供该标识符。

request-id: 2a5Cj89VV7CNhya1DZjjrC