授权和 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 CLIOAuth 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 访问权限的 scopehttps://www.googleapis.com/auth/adwords

生成新的访问令牌

服务账号

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

然后,在每次调用 Google Ads API 时,您都可以在 Authorization HTTP 标头中使用访问令牌

GET /v22/customers:listAccessibleCustomers HTTP/1.1
Host: googleads.googleapis.com
Authorization: Bearer ACCESS_TOKEN
developer-token: DEVELOPER_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 时,使用 curl 请求返回的访问令牌作为 Authorization HTTP 标头的值:

GET /v22/customers:listAccessibleCustomers HTTP/1.1
Host: googleads.googleapis.com
Authorization: Bearer ACCESS_TOKEN
developer-token: DEVELOPER_TOKEN

请求标头

开发者令牌

Google Ads API 还要求使用开发者令牌来调用该 API。如果您已有开发者令牌,可以前往 https://ads.google.com/aw/apicenter 查找。如果系统提示,请登录您的 Google Ads 经理账号。如果您没有开发者令牌,请按照相关说明注册开发者令牌

您必须在每次调用 Google Ads API 时,在 developer-token HTTP 标头中添加开发者令牌值:

GET /v22/customers:listAccessibleCustomers HTTP/1.1
Host: googleads.googleapis.com
Authorization: Bearer ACCESS_TOKEN
developer-token: DEVELOPER_TOKEN

登录客户 ID

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

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

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

关联的客户 ID

关联的客户 ID 标头仅供第三方应用分析工具提供商在将转化上传到关联的 Google Ads 账号时使用。如需了解详情,请参阅 API 调用结构指南

...
Authorization: Bearer ACCESS_TOKEN
developer-token: DEVELOPER_TOKEN
login-customer-id: MANAGER_CUSTOMER_ID
linked-customer-id: LINKED_CUSTOMER_ID

响应标头

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

请求 ID

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

request-id: 2a5Cj89VV7CNhya1DZjjrC