本指南讨论如何使用服务账号访问 Google Ads API。
服务账号属于您的应用,而不属于个别最终用户。服务账号可实现 Web 应用与 Google 服务之间的服务器到服务器交互。您的应用会代表服务账号调用 Google API,因此用户不会直接参与。
服务账号使用的是无需人工授权的 OAuth2 流程,但需使用只有您的应用可访问的密钥文件。
使用服务账号主要有以下两个优势:
- 对 Google API 访问进行授权是以配置步骤的形式完成的,从而避免了与其他 OAuth2 流程有关的复杂性,因为这些流程需要用户互动。
- 通过 OAuth2 断言流程,您的应用可以在必要时模拟其他用户。
对于 OAuth2 桌面应用流程,您可以保留刷新令牌(永不过期),以在必要时获取新的访问令牌。在使用我们的任一客户端库时,您可以通过填写配置文件的方式为您的应用授权。
前提条件
- 您拥有的 Google Workspace 网域,例如
mydomain.com
或mybusiness.com
。 - Google Ads API 开发者令牌以及(可选的)测试账号。
- 适用于您使用的语言的客户端库。
- 已为 Google Ads API 配置的 Google Cloud 项目。
- 对您要访问的 Google Ads 账号拥有权限的 Google Ads 用户。 Google Ads 不支持在不进行模拟的情况下使用服务账号。
服务账号访问权限设置
由于用户模拟仅在网域级别控制,因此通过 Google OAuth2 使用服务账号和断言流程需要您向 Google Workspace 注册自己的网域。然后,您的应用及其用户便可以冒充该网域中的任何用户。
-
以 JSON 格式下载服务账号密钥,并记下服务账号 ID。
与您的网域管理员共享服务账号 ID 和 Google Ads API 范围 (
https://www.googleapis.com/auth/adwords
)。请网域管理员向您的服务账号委派全网域授权。
如果您是网域管理员,请按照帮助中心说明操作。
现在,您就可以使用服务账号通过 OAuth2 断言流程访问自己的 Google Ads 账号。
客户端库配置
选择您的语言以查看有关配置客户端库的说明。
Java
.NET
Python
PHP
Ruby
Perl
安全考量
由于服务账号对您的 Google Workspace 网域具有网域级委托控制权限,因此请务必妥善保护相关的密钥文件,因为该文件会允许服务账号访问其已获得授权的 Google 服务。因为该服务账号能够模拟网域中的任何用户,所以尤其需要强调这一点。
另一个好做法是,让服务账号仅访问所需的最少 API 组。这是一种先发制人的措施,可在服务账号的密钥文件已泄露的情况下,限制攻击者访问的数据量。