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

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

Разберитесь в модели доступа к Google Ads.

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

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

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

поток учетных записей сервиса

Это рекомендуемый рабочий процесс, если ваше приложение не требует участия человека. Этот рабочий процесс включает этап настройки, на котором пользователь добавляет сервисный аккаунт в свой аккаунт 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);

Для получения более подробной информации обратитесь к руководству по рабочему процессу учетной записи службы .

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

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

  1. Предоставьте одному пользователю доступ ко всем аккаунтам, управляемым с помощью API Google Ads. Распространенный подход заключается в предоставлении пользователю доступа к учетной записи менеджера API Google Ads и объединении всех аккаунтов Google Ads под этой учетной записью менеджера.
  2. Пользователь запускает инструмент командной строки, такой как 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 , вы также можете внедрить предварительно настроенный объект ICredential или GoogleCredential непосредственно в GoogleAdsConfig , используя свойство Credentials .

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

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

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

Нередко пользователь управляет несколькими аккаунтами Google Ads, либо напрямую, либо через аккаунт менеджера Google Ads. Клиентская библиотека .NET предоставляет следующие примеры кода, иллюстрирующие обработку таких случаев:

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

Учетные данные приложения по умолчанию

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

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

Для API Google Ads убедитесь, что ваши учетные данные по умолчанию для приложения имеют доступ к области действия OAuth 2.0 по адресу https://www.googleapis.com/auth/adwords .

Чтобы использовать учетные данные приложения по умолчанию, установите параметр 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 обратитесь к странице конфигурации .