身份验证和授权

与其他 Google API 一样,Google Ads API 使用 OAuth 2.0 协议进行身份验证和授权。借助 OAuth 2.0,您的 Google Ads API 客户端应用就能够访问用户的 Google Ads 账号,而无需处理或存储用户的登录信息。

了解 Google Ads 访问权限模型

为了有效地使用 Google Ads API,您应该了解 Google Ads 访问权限模型的工作原理。我们强烈建议您阅读 Google Ads 访问权限模式指南

OAuth 工作流

使用 Google Ads API 时有三种常见的工作流程。

服务账号流程

如果您的工作流不需要任何人工互动,建议采用此工作流。此工作流程需要一个配置步骤,即用户将服务账号添加到其 Google Ads 账号。然后,该应用可以使用服务账号的凭据来管理用户的 Google Ads 账号。该库的配置如下:


// Initialize a GoogleAdsConfig class.
GoogleAdsConfig config = new GoogleAdsConfig()
{
    DeveloperToken = "******",
    OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
    OAuth2SecretsJsonPath = "PATH_TO_CREDENTIALS_JSON",
    LoginCustomerId = ******
};

// Initialize a GoogleAdsClient class.
GoogleAdsClient client = new GoogleAdsClient(config);

如需了解详情,请参阅服务账号工作流指南

单用户身份验证流程

如果您无法使用服务账号,则可以使用此工作流。此工作流需要执行两个配置步骤:

  1. 向单个用户授予使用 Google Ads API 管理的所有账号的访问权限。一种常见的方法是向用户授予 Google Ads API 经理账号的访问权限,并关联该经理账号下的所有 Google Ads 账号。
  2. 用户运行 gcloud CLI 等工具或 GenerateUserCredentials 代码示例,以授权您的应用代表他们管理其所有 Google Ads 账号。

可以使用用户的 OAuth 2.0 凭据初始化该库,如下所示:

GoogleAdsConfig googleAdsConfig = new GoogleAdsConfig()
{
    DeveloperToken = DEVELOPER_TOKEN,
    LoginCustomerId = LOGIN_CUSTOMER_ID,
    OAuth2ClientId = OAUTH_CLIENT_ID,
    OAuth2ClientSecret = OAUTH_CLIENT_SECRET,
    OAuth2RefreshToken = REFRESH_TOKEN,
};

GoogleAdsClient googleAdsClient = new GoogleAdsClient(googleAdsConfig);

如需了解详情,请参阅单用户身份验证工作流指南

多用户身份验证流程

如果您的应用允许用户登录并授权您的应用代表其管理 Google Ads 账号,建议采用此工作流程。您的应用构建并管理 OAuth 2.0 用户凭据。可以使用用户的凭据初始化该库,如下所示:

GoogleAdsConfig googleAdsConfig = new GoogleAdsConfig()
{
    DeveloperToken = DEVELOPER_TOKEN,
    LoginCustomerId = LOGIN_CUSTOMER_ID,
    OAuth2ClientId = OAUTH_CLIENT_ID,
    OAuth2ClientSecret = OAUTH_CLIENT_SECRET,
    OAuth2RefreshToken = REFRESH_TOKEN,
};

GoogleAdsClient googleAdsClient = new GoogleAdsClient(googleAdsConfig);

如需了解详情,请参阅多用户身份验证工作流指南。.NET 客户端库包含两个代码示例供您参考:

  1. AuthenticateInAspNetCoreApplication 代码示例演示了如何构建一个 Web 应用,该应用可在运行时获取用户身份验证信息,以便代表用户管理其 Google Ads 账号。该应用使用用户的 OAuth 2.0 凭据来检索其 Google Ads 账号中的广告系列。

  2. GenerateUserCredentials 是一个命令行代码示例,用于说明如何在运行时获取用户身份验证,以便代表用户管理其 Google Ads 账号。您可以参考此代码示例来构建需要用户身份验证的桌面应用。

如果我的用户管理多个账号,该怎么办?

用户通常会通过直接访问账号或通过 Google Ads 经理账号来管理多个 Google Ads 账号。.NET 客户端库提供了以下代码示例,说明了如何处理此类情况。

  1. GetAccountHierarchy 代码示例展示了如何检索 Google Ads 经理账号下的所有账号的列表。
  2. ListAccessibleCustomers 代码示例展示了如何检索用户可以直接访问的所有账号的列表。然后,这些账号可用作LoginCustomerId设置的有效值。