与 Google 的其他 API 一样,Google Ads API 使用 OAuth 2.0 协议进行身份验证和授权。OAuth 2.0 可让您的 Google Ads API .NET 客户端应用访问用户的 Google Ads 账号,而无需处理或存储用户的登录信息。
了解 Google Ads 访问权限模型
如需高效使用 Google Ads API,请了解 Google Ads 访问权限模型的工作原理。请参阅 Google Ads 访问权限模型指南。
OAuth 工作流
使用 Google Ads API 时,有三种常见的工作流。
服务账号工作流
如果您的应用不需要任何人工互动,建议使用此工作流。此工作流需要一个配置步骤,即用户将其 服务账号添加到其 Google Ads 账号。然后,应用可以使用服务账号的凭据来管理用户的 Google Ads 账号。
按如下方式配置库:
// Initialize a GoogleAdsConfig instance.
GoogleAdsConfig config = new GoogleAdsConfig()
{
OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
OAuth2SecretsJsonPath = "PATH_TO_CREDENTIALS_JSON",
LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
};
// Initialize a GoogleAdsClient instance.
GoogleAdsClient client = new GoogleAdsClient(config);
如需了解 详情,请参阅服务账号工作流指南。
单用户身份验证工作流
如果您无法使用服务账号,则可以使用此工作流。此工作流需要两个配置步骤:
- 向单个用户授予对所有要使用 Google Ads API 管理的账号的访问权限。一种常见的方法是向用户授予对 Google Ads API 经理账号的访问权限,并关联该经理账号下的所有 Google Ads 账号。
- 用户运行命令行工具(例如
gcloud)或GenerateUserCredentials代码示例,以 授权您的应用代表他们管理其所有 Google Ads 账号。
使用用户的 OAuth 2.0 凭据初始化库,如下所示:
GoogleAdsConfig config = new GoogleAdsConfig()
{
LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE",
OAuth2ClientId = "INSERT_OAUTH_CLIENT_ID_HERE",
OAuth2ClientSecret = "INSERT_OAUTH_CLIENT_SECRET_HERE",
OAuth2RefreshToken = "INSERT_REFRESH_TOKEN_HERE"
};
GoogleAdsClient client = new GoogleAdsClient(config);
如需了解详情,请参阅单用户身份验证工作流指南以 了解更多。
多用户身份验证工作流
如果您的应用允许用户登录并授权您的应用代表他们管理其 Google Ads 账号,建议使用此工作流。您的应用会根据每个用户会话或请求动态构建和管理
OAuth 2.0 用户凭据,然后使用活跃用户的刷新令牌初始化 GoogleAdsClient:
GoogleAdsConfig config = new GoogleAdsConfig()
{
LoginCustomerId = userSession.LoginCustomerId,
OAuth2ClientId = "INSERT_OAUTH_CLIENT_ID_HERE",
OAuth2ClientSecret = "INSERT_OAUTH_CLIENT_SECRET_HERE",
OAuth2RefreshToken = userSession.RefreshToken
};
GoogleAdsClient client = new GoogleAdsClient(config);
从 Google.Ads.GoogleAds v27.0.0 开始,您还可以使用 Credentials 属性直接在
GoogleAdsConfig 上注入
预配置的 ICredential 或 GoogleCredential 对象。
如需了解详情,请参阅多用户身份验证工作流指南以 了解更多。.NET 客户端库包含两个代码示例供您参考:
AuthenticateInAspNetCoreApplication代码 示例说明了如何构建一个 Web 应用,该应用在运行时获取用户身份验证 以代表用户管理其 Google Ads 账号。该应用使用用户的 OAuth 2.0 凭据来检索其 Google Ads 账号中的广告系列。GenerateUserCredentials命令行 代码示例说明了如何在运行时获取用户身份验证,以 代表用户管理其 Google Ads 账号。您可以将此代码示例作为参考,构建需要用户身份验证的桌面应用。
如果我的用户管理多个账号,该怎么办?
用户通常会管理多个 Google Ads 账号,无论是通过直接访问账号,还是通过 Google Ads 经理账号。.NET 客户端库提供了以下代码示例,说明了如何处理此类情况:
GetAccountHierarchy代码示例展示了如何 检索 Google Ads 经理账号下的所有账号的列表。- The
ListAccessibleCustomers代码示例 展示了如何检索用户可以直接访问的所有账号的列表 。然后,这些账号可用作LoginCustomerId设置的有效值。
应用默认凭据
.NET 客户端库 (v24.1.0 及更高版本) 还支持使用
应用默认凭证进行身份验证。
这对于本地开发或针对不同的 Google API 进行开发尤其有用,因为您可以重复使用相同的凭据,前提是这些凭据可以访问所需的 OAuth 2.0 权限范围。
对于 Google Ads API,请确保您的应用默认凭证可以访问 https://www.googleapis.com/auth/adwords OAuth 2.0 权限范围。
如需使用应用默认凭证,请在 GoogleAdsConfig 中将
UseApplicationDefaultCredentials 选项设置为 true(或者,在使用 config.LoadFromEnvironmentVariables() 加载配置时,将
USE_APPLICATION_DEFAULT_CREDENTIALS=true 环境变量设置为 true):
GoogleAdsConfig config = new GoogleAdsConfig()
{
UseApplicationDefaultCredentials = true,
LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
};
GoogleAdsClient client = new GoogleAdsClient(config);
如需详细了解可用于配置 .NET 客户端库的可用选项,请参阅配置页面。