与 Google 的其他 API 一样,Google Ads API 使用 OAuth 2.0 协议进行身份验证和授权。借助 OAuth 2.0,您的 Google Ads API 客户端应用就能够访问用户的 Google Ads 账号,而无需处理或存储用户的登录信息。
本指南介绍了如何使用三种最常见的 OAuth 2.0 流程配置 Java 版 Google Ads API 客户端库以进行身份验证,并说明了必要的凭据。
如需深入了解 Google Ads API 访问权限模型,请阅读 Google Ads access model guide。
凭据
访问 Google Ads API 需要开发者令牌、OAuth 2.0 凭据,在某些情况下还需要登录客户 ID。
开发者令牌
开发者令牌与经理 账号相关联,可以在Google Ads 网页界面中找到。
虽然开发者令牌与经理账号相关联,但它不会提供对该账号的访问权限。相反,开发者令牌会授予对 API 的一般访问权限,而账号级访问权限是通过 OAuth 2.0 配置的。
在客户端库中,开发者令牌由 ads.properties 文件中的 api.googleads.developerToken 键指定。
OAuth 2.0 凭据
如需以有权访问 Google Ads 账号的 Google 账号用户的身份进行授权,您必须提供一组 OAuth 2.0 凭据。所需的凭据类型因所使用的 OAuth 2.0 流程而异。
该库支持以下三种流程:
- 服务账号流程
- 单用户身份验证流程
- 多用户身份验证流程
如需详细了解 Google Ads API OAuth 流程,请参阅 OAuth 概览,然后按照最符合您 需求的流程的说明获取所需的凭据。
登录客户 ID
(可选)指定提供对广告投放账号的访问权限的经理账号的客户 ID。如果您通过经理账号访问客户账号,则必须指定此 ID。无需指定客户 ID 路径上的所有经理账号,只需指定您用于访问权限的最顶层经理 ID 即可。如需了解详情,请参阅相关 文档。
在客户端库中,登录客户 ID 由 ads.properties 文件中的 api.googleads.loginCustomerId 键指定。
配置
您可以使用 ads.properties 文件、环境变量或以编程方式配置客户端库。本指南重点介绍如何使用 ads.properties 文件。如需详细了解所有选项,请参阅配置
指南。
如果使用 ads.properties 文件,请将其放在主目录中:
~/ads.properties。
OAuth 工作流
使用 Google Ads API 时,有三种常见的工作流。
服务账号流程
如果您的工作流不需要任何人工互动,建议使用此工作流。此工作流需要一个配置步骤,即用户将其 服务账号添加到 Google Ads 账号。然后,应用可以使用服务账号的凭据来管理用户的 Google Ads 账号。
获得私钥 JSON 文件后,请将以下内容添加到 ads.properties 文件中:
api.googleads.serviceAccountSecretsPath=PRIVATE_KEY_JSON_FILE_PATH
api.googleads.developerToken=INSERT_DEVELOPER_TOKEN_HERE
# Only add this key if you are using impersonation to access an account
# other than the service account itself.
# api.googleads.serviceAccountUser=USER_EMAIL_TO_IMPERSONATE
如需了解 详情,请参阅服务账号工作流指南。
单用户身份验证流程
如果您无法使用服务账号,则可以使用此工作流。此工作流需要两个配置步骤:
- 向单个用户授予对所有要使用 Google Ads API 管理的账号的访问权限。一种常见方法是向用户授予对 Google Ads API 经理账号的访问权限,并关联该经理账号下的所有 Google Ads 账号。
- 用户运行命令行工具(例如 gcloud)或
GenerateUserCredentials代码示例,以 授权您的应用代表他们管理其所有 Google Ads 账号。
获得这些凭据后,请将以下内容添加到 ads.properties 文件中:
api.googleads.clientId=INSERT_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_REFRESH_TOKEN_HERE
api.googleads.developerToken=INSERT_DEVELOPER_TOKEN_HERE
如需了解详情,请参阅单用户身份验证工作流指南以 了解更多。
多用户身份验证流程
如果您的应用允许用户登录并授权您的应用代表他们管理其 Google Ads 账号,建议使用此工作流。 GenerateUserCredentials 是一个命令行 代码示例,说明了如何在运行时获取用户身份验证 以代表他们管理其 Google Ads 账号。您可以将此代码示例作为参考,构建需要用户身份验证的桌面应用。
请将以下内容添加到 ads.properties 文件:
api.googleads.clientId=INSERT_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_REFRESH_TOKEN_HERE
api.googleads.developerToken=INSERT_DEVELOPER_TOKEN_HERE
如需了解详情,请参阅多用户身份验证工作流指南以 了解更多。
如果我的用户管理多个账号,该怎么办?
用户通常会管理多个 Google Ads 账号,无论是通过直接访问账号,还是通过 Google Ads 经理账号。Java 客户端库提供了以下代码示例,说明了如何处理此类情况。
- GetAccountHierarchy 代码示例展示了如何 检索 Google Ads 经理账号下的所有账号的列表。
- ListAccessibleCustomers 代码示例展示了
如何检索用户有权直接访问的所有账号的列表。
然后,这些账号可用作
LoginCustomerId设置的有效值。
应用默认凭据
Java 客户端库还支持使用 应用默认凭据进行身份验证。
这对于本地开发或针对不同的 Google API 进行开发尤其有用,因为您可以重复使用相同的凭据,前提是这些凭据可以访问正确的 OAuth 2.0 范围。
对于 Google Ads API,请确保您的应用默认凭据可以访问 https://www.googleapis.com/auth/adwords OAuth 2.0 范围。
如需使用应用默认凭据,请在 ads.properties 文件中将 api.googleads.useApplicationDefaultCredentials 选项设置为 true。使用应用默认凭据时,不应设置客户端 ID、客户端密钥和刷新令牌。