Al igual que otras APIs de Google, la API de Google Ads usa el protocolo OAuth 2.0 para la autenticación y la autorización. OAuth 2.0 permite que tu app cliente de .NET de la API de Google Ads acceda a la cuenta de Google Ads de un usuario sin tener que controlar ni almacenar su información de acceso.
Información sobre el modelo de acceso de Google Ads
Para trabajar de manera eficaz con la API de Google Ads, debes comprender cómo funciona el modelo de acceso de Google Ads. Consulta la guía del modelo de acceso de Google Ads.
Flujos de trabajo de OAuth
Existen tres flujos de trabajo comunes que se usan cuando se trabaja con la API de Google Ads.
Flujo de cuenta de servicio
Este es el flujo de trabajo recomendado si tu aplicación no requiere ninguna interacción humana. Este flujo de trabajo requiere un paso de configuración, en el que el usuario agrega una cuenta de servicio a su cuenta de Google Ads. Luego, la app puede usar las credenciales de la cuenta de servicio para administrar la cuenta de Google Ads del usuario.
Configura la biblioteca de la siguiente manera:
// 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);
Consulta la guía del flujo de trabajo de la cuenta de servicio para obtener más información.
Flujo de autenticación de un solo usuario
Este flujo de trabajo se puede usar si no puedes usar cuentas de servicio. Este flujo de trabajo requiere dos pasos de configuración:
- Otorga acceso a un solo usuario a todas las cuentas que se administrarán con la API de Google Ads. Un enfoque común es otorgar al usuario acceso a una cuenta de administrador de la API de Google Ads y vincular todas las cuentas de Google Ads a esa cuenta de administrador.
- El usuario ejecuta una herramienta de línea de comandos, como
gcloudo elGenerateUserCredentialsejemplo de código para autorizar a tu app a administrar todas sus cuentas de Google Ads en su nombre.
Inicializa la biblioteca con las credenciales de OAuth 2.0 del usuario de la siguiente manera:
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);
Consulta la guía del flujo de trabajo de autenticación de un solo usuario para obtener más información.
Flujo de autenticación multiusuario
Este es el flujo de trabajo recomendado si tu app permite que los usuarios accedan y la autoricen para administrar sus cuentas de Google Ads en su nombre. Tu app compila y administra las credenciales de usuario de OAuth 2.0 de forma dinámica por sesión o solicitud de usuario y, luego, inicializa un GoogleAdsClient con el token de actualización del usuario activo:
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);
A partir de Google.Ads.GoogleAds v27.0.0, también puedes insertar un
objeto ICredential o GoogleCredential preconfigurado directamente en
GoogleAdsConfig con la propiedad Credentials.
Consulta la guía del flujo de trabajo de autenticación multiusuario para obtener más información. La biblioteca cliente de .NET incluye dos ejemplos de código como referencia:
- En el ejemplo de código
AuthenticateInAspNetCoreApplication, se muestra cómo compilar una app web que obtiene la autenticación del usuario en el tiempo de ejecución para administrar sus cuentas de Google Ads en su nombre. La app usa las credenciales de OAuth 2.0 del usuario para recuperar las campañas de su cuenta de Google Ads. - En el ejemplo de código de línea de comandos
GenerateUserCredentials, se muestra cómo obtener la autenticación del usuario en el tiempo de ejecución para administrar sus cuentas de Google Ads en su nombre. Puedes usar este ejemplo de código como referencia para compilar apps de escritorio que requieran autenticación de usuario.
¿Qué sucede si mi usuario administra varias cuentas?
Es común que un usuario administre más de una cuenta de Google Ads, ya sea a través del acceso directo a las cuentas o a través de una cuenta de administrador de Google Ads. La biblioteca cliente de .NET proporciona los siguientes ejemplos de código que muestran cómo controlar estos casos:
- En el ejemplo de código
GetAccountHierarchy, se muestra cómo recuperar la lista de todas las cuentas de una cuenta de administrador de Google Ads. - En el ejemplo de código
ListAccessibleCustomers, se muestra cómo recuperar la lista de todas las cuentas a las que un usuario tiene acceso directo. Luego, estas cuentas se pueden usar como valores válidos para la configuraciónLoginCustomerId.
Credenciales predeterminadas de la aplicación
La biblioteca cliente de .NET (v24.1.0 y versiones posteriores) también admite la autenticación con
las credenciales predeterminadas de la aplicación.
Esto es particularmente útil para el desarrollo local o para el desarrollo en diferentes APIs de Google, ya que puedes reutilizar las mismas credenciales, siempre que puedan acceder a los permisos de OAuth 2.0 requeridos.
En el caso de la API de Google Ads, asegúrate de que tus credenciales predeterminadas de la aplicación puedan acceder al permiso de OAuth 2.0 https://www.googleapis.com/auth/adwords.
Para usar las credenciales predeterminadas de la aplicación, establece la
UseApplicationDefaultCredentials opción en true en tu GoogleAdsConfig
(o establece la USE_APPLICATION_DEFAULT_CREDENTIALS=true variable de entorno cuando
cargues la configuración con config.LoadFromEnvironmentVariables()):
GoogleAdsConfig config = new GoogleAdsConfig()
{
UseApplicationDefaultCredentials = true,
LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
};
GoogleAdsClient client = new GoogleAdsClient(config);
Consulta la página de configuración para obtener más detalles sobre las opciones disponibles para configurar la biblioteca cliente de .NET.