您可以通过多种不同的方式配置客户端。
身份验证配置
您可以通过多种方式管理访问 Google Ads API 所需的 OAuth 凭据。您选择的方法会影响您使用的配置字段。如需了解详情,请参阅我们的身份验证指南。
使用 YAML 文件进行配置
您可以指定在初始化客户端时使用的 YAML 文件,该文件包含向 Google Ads API 发出请求所需的必要信息。当使用 load_from_storage 方法初始化客户端时,系统会访问此文件。生成此文件的最简单方法是从 GitHub 代码库复制 google-ads.yaml 示例,并对其进行修改以添加您的凭据,包括开发者令牌、刷新令牌、客户端 ID 和客户端密钥。
如果您未提供路径,该库将在您的 $HOME 目录中查找相应文件:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()
如需指定 google-ads.yaml 文件所在的位置,您可以在调用该方法时将路径作为字符串传递给该方法:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage("path/to/google-ads.yaml")
您还可以通过定义特定环境变量来指定路径:
import os
os.environ["GOOGLE_ADS_CONFIGURATION_FILE_PATH"] = "path/to/google-ads.yaml"
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()
如果同时提供了这两个值(即向方法传递了路径,并且存在环境变量),则库将优先考虑传递给方法的路径。
使用环境变量进行配置
您可以将所有客户端配置存储为环境变量,在使用客户端的 load_from_env 方法时,系统会读取这些环境变量。环境变量应与 google-ads.yaml 文件中定义的环境变量同名,但应全部采用大写形式,并以 GOOGLE_ADS_ 命名空间为前缀。例如,client_id 应存储为 GOOGLE_ADS_CLIENT_ID。
环境变量通常在 bash 配置文件(例如位于 $HOME 目录中的 .bashrc 或 .bash_profile 文件)中定义。也可以使用命令行定义它们。请注意,这些说明假定您使用的是 bash。如果您使用的是其他 shell,可能需要查阅相关文档,了解如何在您使用的 shell 中设置环境变量。
以下是使用终端通过 .bashrc 文件定义环境变量的一些基本步骤:
# Append the line "export GOOGLE_ADS_CLIENT_ID=1234567890" to
# the bottom of your .bashrc file.
$ echo "export GOOGLE_ADS_CLIENT_ID=1234567890" >> ~/.bashrc
# Update your bash environment to use the most recently updated
# version of your .bashrc file.
$ src ~/.bashrc
您还可以直接在终端实例中通过命令行设置环境变量:
$ export GOOGLE_ADS_CLIENT_ID=1234567890
$ echo $GOOGLE_ADS_CLIENT_ID
1234567890
load_from_env 方法从 Python 内置 os 模块的 environ 属性加载配置数据。例如:
os.environ["GOOGLE_ADS_CLIENT_ID"]
以下示例展示了如何使用环境变量中的配置来初始化客户端实例:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_env()
为了通过环境变量配置 logging,配置值必须是一个 JSON 对象,该对象与示例 google-ads.yaml 配置文件中的 YAML 键的结构相匹配。
以下示例展示了如何使用 .bashrc 文件设置此属性:
export GOOGLE_ADS_LOGGING='{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"default_fmt": {
"format": "[%(asctime)s - %(levelname)s] %(message).5000s",
"datefmt": "%Y-%m-%d %H:%M:%S"
}
},
"handlers": {
"default_handler": {
"class": "logging.StreamHandler",
"formatter": "default_fmt"
}
},
"loggers": {
"": {
"handlers": ["default_handler"],
"level": "INFO"
}
}
}'
使用 YAML 字符串进行配置
如果您已将 YAML 文件读入内存,则可以在初始化时直接将其提供给客户端。为此,只需使用 load_from_string 方法。
from google.ads.googleads.client import GoogleAdsClient
with open("/path/to/yaml", "rb") as handle:
yaml = handle.read()
client = GoogleAdsClient.load_from_string(yaml)
使用 dict 进行配置
您可以直接将 dict 传递给 load_from_dict 方法。例如:
from google.ads.googleads.client import GoogleAdsClient
credentials = {
"developer_token": "abcdef123456",
"refresh_token": "1//0abcdefghijklABCDEF",
"client_id": "123456-abcdef.apps.googleusercontent.com",
"client_secret": "aBcDeFgHiJkL"}
client = GoogleAdsClient.load_from_dict(credentials)
配置字段
客户端库配置支持以下字段。
身份验证
请仅使用以下一组字段,具体取决于您使用的身份验证方法:
- 使用应用默认凭据的单用户(文档)
use_application_default_credentials:库是否应使用应用默认凭据 (ADC) 进行身份验证。
- 使用 OAuth 令牌的单用户(文档)
client_id:您的 OAuth 客户端 ID。client_secret:您的 OAuth 客户端密钥。refresh_token:您的 OAuth 刷新令牌。
- 服务账号(文档)
json_key_file_path:本地私钥文件的路径。用于使用服务账号进行身份验证。
库行为
这些字段决定了库的行为:
logging:请参阅日志记录配置详情。http_proxy:请参阅代理文档。use_proto_plus:是否使用 proto-plus 消息。请参阅 protobuf 消息文档。
请求级配置
developer_token:必需:用于访问 API 的开发者令牌。linked_customer_id:请参阅关联客户 ID 文档。login_customer_id:请参阅登录客户 ID 文档。
环境变量
如需使用环境变量配置库,请使用以下命令:
GOOGLE_ADS_CLIENT_IDGOOGLE_ADS_CLIENT_SECRETGOOGLE_ADS_CONFIGURATION_FILE_PATHGOOGLE_ADS_DEVELOPER_TOKENGOOGLE_ADS_HTTP_PROXYGOOGLE_ADS_JSON_KEY_FILE_PATHGOOGLE_ADS_LINKED_CUSTOMER_IDGOOGLE_ADS_LOGIN_CUSTOMER_IDGOOGLE_ADS_LOGGINGGOOGLE_ADS_REFRESH_TOKENGOOGLE_ADS_USE_PROTO_PLUSGOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS
日志记录配置
日志记录字段(即 logging 配置字段下的字段)直接派生自 logging.config 内置模块,因为该库会将 logging 命名空间下的所有字段直接传递给 logging.config.dictConfig 方法。如需了解完整的详细信息,请参阅日志记录指南。
version:表示架构版本的整数值。disable_existing_loggers:是否应停用在应用中的其他位置配置的记录器。formatters:用于定义不同类型格式化程序的字典。handlers:用于定义不同处理程序的字典,这些处理程序用于控制日志的写入位置以及应使用的格式化程序。loggers:用于定义不同类型的日志记录器的字典,其中包括处理程序和日志级别。