服务账号工作流程

本指南讨论如何使用服务账号访问 Google Ads API。

服务账号是属于您的应用而不是某个最终用户的账号。服务账号使用的是无需人工授权的 OAuth 2.0 流程,但需使用只有您的应用可访问的密钥文件。

使用服务账号主要有以下两个优势:

  • Google Ads API 对 Google Ads 账号的访问授权是通过配置步骤完成的,利用了 Google Ads 界面提供的授权和账号管理功能。这样一来,开发者就无需构建 OAuth 2.0 流程,也无需处理涉及用户互动、存储用户凭据等复杂问题,从而节省了开发工作量。

  • Google Ads 账号的访问授权与个人用户凭据无关,这在以下情况下可能很有用:即使最初授权访问的员工离开团队或公司,也希望继续授权访问。

账号访问权限设置

  1. 首先,创建服务账号和凭据

    以 JSON 格式下载服务账号密钥,并记下服务账号 ID 和电子邮件地址。

  2. 以管理员身份登录您的 Google Ads 账号。前往管理员 > 访问权限和安全

  3. 点击用户标签页下的 + 按钮。

  4. 电子邮件输入框中输入服务账号电子邮件地址。选择适当的账号访问权限级别,然后点击添加账号按钮。请注意,电子邮件和管理员访问权限级别不适用于服务账号。

  5. 系统会向服务账号授予访问权限。

客户端库配置

选择与您的编程语言对应的标签页,查看有关如何配置客户端库的说明。

Java

在配置中设置私钥 JSON 路径。如果您使用的是 ads.properties 文件,请添加以下内容:

api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH

如需了解详情,请参阅配置指南

.NET

GoogleAdsConfig 实例上设置 OAuth2ModeOAuth2SecretsJsonPath,并使用该实例初始化 GoogleAdsClient 对象。

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
    OAuth2SecretsJsonPath = "PATH_TO_JSON_SECRETS_PATH",
    ...
};
GoogleAdsClient client = new GoogleAdsClient(config);

如需了解详情,请参阅配置指南

Python

在配置中设置私钥 JSON 路径。如果您使用的是 google-ads.yaml file、YAML 字符串或 dict,请添加以下内容:

json_key_file_path: JSON_KEY_FILE_PATH

如果您使用的是环境变量,请将以下内容添加到您的 Bash 配置或环境中:

export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH

PHP

google_ads_php.ini 中配置以下键。如需了解更多详情,请参阅配置指南

; For service account flow.
jsonKeyFilePath = "JSON_KEY_FILE_PATH"
scopes = "https://www.googleapis.com/auth/adwords"

Ruby

google_ads_config.rb 中配置以下键。

c.keyfile = 'JSON_KEY_FILE_PATH'

Perl

在配置中设置私钥 JSON 路径和委托账号 ID。 如果您使用的是 googleads.properties 文件,请添加以下内容:

jsonKeyFilePath=JSON_KEY_FILE_PATH

如果您使用的是环境变量,请将以下内容添加到您的 Bash 配置或环境中:

export GOOGLE_ADS_JSON_KEY_FILE_PATH=JSON_KEY_FILE_PATH

curl

首先,在 gcloud CLI 中将服务账号设置为有效凭据。

gcloud auth login --cred-file=PATH_TO_CREDENTIALS_JSON

接下来,获取 Google Ads API 的 OAuth 2.0 访问令牌。

gcloud auth \
  print-access-token \
  --scopes='https://www.googleapis.com/auth/adwords'

现在,您可以在 API 调用中使用访问令牌了。以下示例展示了如何使用 GoogleAdsService.SearchStream 方法运行广告系列报告,以检索您账号中的广告系列。本指南不涉及报告的详细信息。

curl -i -X POST https://googleads.googleapis.com/v21/customers/CUSTOMER_ID/googleAds:searchStream \
   -H "Content-Type: application/json" \
   -H "Authorization: Bearer ACCESS_TOKEN" \
   -H "developer-token: DEVELOPER_TOKEN" \
   -H "login-customer-id: LOGIN_CUSTOMER_ID" \
   --data-binary "@query.json"

query.json 的内容如下所示:

{
  "query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}