Как и другие 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);
Подробную информацию вы найдете в руководстве по работе с сервисными аккаунтами.
Процесс аутентификации одного пользователя
Этот рабочий процесс можно использовать, если вы не можете использовать сервисные аккаунты. Этот рабочий процесс требует двух шагов настройки:
- Предоставьте одному пользователю доступ ко всем аккаунтам, которыми нужно управлять с помощью Google Ads API. Обычно пользователю предоставляют доступ к управляющему аккаунту Google Ads API и связывают с ним все аккаунты Google Рекламы.
- Пользователь запускает инструмент командной строки, например
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 включает два примера кода:
- В примере кода
AuthenticateInAspNetCoreApplicationпоказано, как создать веб-приложение, которое получает аутентификацию пользователя во время выполнения, чтобы управлять его аккаунтами Google Рекламы от его имени. Приложение использует учетные данные OAuth 2.0 пользователя, чтобы получить кампании из его аккаунта Google Рекламы. - Пример кода командной строки
GenerateUserCredentialsпоказывает, как получить аутентификацию пользователя во время выполнения, чтобы управлять его аккаунтами Google Рекламы от его имени. Этот пример кода можно использовать в качестве справочного материала при создании приложений для компьютеров, требующих аутентификации пользователей.
Что делать, если пользователь управляет несколькими аккаунтами?
Пользователи часто управляют несколькими аккаунтами Google Рекламы, используя прямой доступ к ним или управляющий аккаунт Google Рекламы. В клиентской библиотеке .NET есть примеры кода, которые показывают, как обрабатывать такие случаи:
- Пример кода на
GetAccountHierarchyпоказывает, как получить список всех аккаунтов, относящихся к управляющему аккаунту Google Рекламы. - В примере кода
ListAccessibleCustomersпоказано, как получить список всех аккаунтов, к которым у пользователя есть прямой доступ. Эти аккаунты можно использовать в качестве допустимых значений для параметраLoginCustomerId.
Application Default Credentials
Клиентская библиотека .NET (версии v24.1.0 и более поздних) также поддерживает аутентификацию с помощью Application Default Credentials.
Это особенно полезно при локальной разработке или разработке с использованием разных API Google, поскольку вы можете повторно использовать одни и те же учетные данные, если они могут получить доступ к необходимым областям действия OAuth 2.0.
Для Google Ads API убедитесь, что у ваших учетных данных по умолчанию для приложения есть доступ к области действия 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 можно найти на странице конфигурации.