Аутентификация и авторизация

Как и другие API Google, Google Ads API использует протокол OAuth 2.0 для аутентификации и авторизации. OAuth 2.0 позволяет клиентскому приложению .NET Google Ads API получать доступ к аккаунту Google Рекламы без необходимости обрабатывать или хранить данные для входа пользователя.

Как работает модель доступа в Google Рекламе

Чтобы эффективно работать с Google Ads API, необходимо понимать, как устроена модель доступа Google Рекламы. Ознакомьтесь с руководством по модели доступа к Google Рекламе.

Рабочие процессы OAuth

При работе с Google Ads API обычно используются три рабочих процесса.

Процесс для сервисного аккаунта

Это рекомендуемый рабочий процесс, если ваше приложение не требует взаимодействия с человеком. Этот рабочий процесс требует настройки, в ходе которой пользователь добавляет сервисный аккаунт в свой аккаунт Google Рекламы. После этого приложение сможет использовать учетные данные сервисного аккаунта для управления аккаунтом Google Рекламы пользователя.

Настройте библиотеку следующим образом:

// 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);

Подробную информацию вы найдете в руководстве по работе с сервисными аккаунтами.

Процесс аутентификации одного пользователя

Этот рабочий процесс можно использовать, если вы не можете использовать сервисные аккаунты. Этот рабочий процесс требует двух шагов настройки:

  1. Предоставьте одному пользователю доступ ко всем аккаунтам, которыми нужно управлять с помощью Google Ads API. Обычно пользователю предоставляют доступ к управляющему аккаунту Google Ads API и связывают с ним все аккаунты Google Рекламы.
  2. Пользователь запускает инструмент командной строки, например gcloud или пример кода GenerateUserCredentials, чтобы разрешить вашему приложению управлять всеми его аккаунтами Google Рекламы от его имени.

Инициализируйте библиотеку, используя учетные данные 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 Рекламы от их имени. Ваше приложение динамически создает учетные данные 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, вы также можете внедрять предварительно настроенный объект ICredential или GoogleCredential непосредственно в GoogleAdsConfig с помощью свойства Credentials.

Подробную информацию можно найти в руководстве по рабочему процессу добавления пользователей. Клиентская библиотека .NET включает два примера кода:

  1. Пример кода AuthenticateInAspNetCoreApplication показывает, как создать веб-приложение, которое получает аутентификацию пользователя во время выполнения, чтобы управлять его аккаунтами Google Рекламы от его имени. Приложение использует учетные данные OAuth 2.0 пользователя, чтобы получить кампании из его аккаунта Google Рекламы.
  2. Пример кода командной строки GenerateUserCredentials показывает, как получить аутентификацию пользователя во время выполнения, чтобы управлять его аккаунтами Google Рекламы от его имени. Вы можете использовать этот пример кода в качестве справки для создания компьютерных приложений, требующих аутентификации пользователя.

Что делать, если пользователь управляет несколькими аккаунтами?

Пользователи часто управляют несколькими аккаунтами Google Рекламы, используя прямой доступ к ним или управляющий аккаунт Google Рекламы. В клиентской библиотеке .NET есть примеры кода, показывающие, как обрабатывать такие случаи:

  1. Пример кода на GetAccountHierarchy показывает, как получить список всех аккаунтов, связанных с управляющим аккаунтом Google Рекламы.
  2. В примере кода ListAccessibleCustomers показано, как получить список всех аккаунтов, к которым у пользователя есть прямой доступ. Эти аккаунты можно использовать в качестве допустимых значений для настройки LoginCustomerId.

Application Default Credentials

Клиентская библиотека .NET (версии v24.1.0 и более поздних) также поддерживает аутентификацию с помощью Application Default Credentials.

Это особенно удобно при локальной разработке или при работе с разными API Google, поскольку вы можете повторно использовать одни и те же учетные данные, если у них есть доступ к необходимым областям действия OAuth 2.0.

Для Google Ads API убедитесь, что у Application Default Credentials есть доступ к области действия OAuth 2.0 https://www.googleapis.com/auth/adwords.

Чтобы использовать Application Default Credentials, задайте для параметра UseApplicationDefaultCredentials значение true в файле GoogleAdsConfig (или задайте переменную среды USE_APPLICATION_DEFAULT_CREDENTIALS=true при загрузке конфигурации с помощью config.LoadFromEnvironmentVariables()):

GoogleAdsConfig config = new GoogleAdsConfig()
{
    UseApplicationDefaultCredentials = true,
    LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
};
GoogleAdsClient client = new GoogleAdsClient(config);

Дополнительную информацию о доступных вариантах настройки клиентской библиотеки .NET можно найти на странице Конфигурация.