您可以通过多种不同的方式配置客户端。
使用 YAML 文件进行配置
您可以指定在初始化客户端时使用的 YAML 文件,该文件包含发出请求所需的必要身份验证信息。当使用 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)
配置字段
客户端库配置支持以下字段。
常规字段(无论您使用的是 YAML 配置还是字典配置,这些名称都相同):
refresh_token
:您的 OAuth 刷新令牌。client_id
:您的 OAuth 客户端 ID。client_secret
:您的 OAuth 客户端密钥。developer_token
:用于访问 API 的开发者令牌。login_customer_id
:请参阅登录客户 ID 文档。linked_customer_id
:请参阅linked-customer-id 文档。json_key_file_path
(之前为path_to_private_key_file
):本地私钥文件的路径。用于使用服务账号进行身份验证。请参阅 OAuth2 服务账号文档。impersonated_email
(之前为delegate_account
):用作委托方的账号电子邮件地址。用于使用服务账号进行身份验证。请参阅 OAuth2 服务账号文档。logging
:日志记录配置。日志记录字段如下所述。http_proxy
:请参阅代理文档。use_proto_plus
:是否使用 proto-plus 消息。请参阅 Protobuf 消息文档。
作为环境变量的一般字段:
GOOGLE_ADS_CONFIGURATION_FILE_PATH
GOOGLE_ADS_REFRESH_TOKEN
GOOGLE_ADS_CLIENT_ID
GOOGLE_ADS_CLIENT_SECRET
GOOGLE_ADS_DEVELOPER_TOKEN
GOOGLE_ADS_LOGIN_CUSTOMER_ID
GOOGLE_ADS_LINKED_CUSTOMER_ID
GOOGLE_ADS_JSON_KEY_FILE_PATH
(之前称为GOOGLE_ADS_PATH_TO_PRIVATE_KEY_FILE
)GOOGLE_ADS_IMPERSONATED_EMAIL
(之前称为GOOGLE_ADS_DELEGATE_ACCOUNT
)GOOGLE_ADS_LOGGING
GOOGLE_ADS_HTTP_PROXY
GOOGLE_ADS_USE_PROTO_PLUS
日志记录字段(即 logging
配置字段下的字段)直接派生自 logging.config
内置模块,因为该库会将 logging
命名空间下的所有字段直接传递给 logging.config.dictConfig
方法。如需了解完整的详细信息,请参阅日志记录指南。
version
:表示架构版本的整数值。disable_existing_loggers
:是否应停用在应用中的其他位置配置的记录器。formatters
:用于定义不同类型格式化程序的字典。handlers
:用于定义不同处理程序的字典,用于控制日志的写入位置以及应使用的格式化程序。loggers
:用于定义不同类型日志记录器的字典,其中包括处理程序和日志级别。