Autenticación y autorización

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 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. Te recomendamos que leas la guía del modelo de acceso de Google Ads.

Flujos de trabajo de OAuth

Existen tres flujos de trabajo comunes que se utilizan cuando se trabaja con la API de Google Ads.

Flujo de la cuenta de servicio

Este es el flujo de trabajo recomendado si no requiere 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.

A continuación, se explica cómo configurar OAuth2 para el acceso a la API con tus propias credenciales y una cuenta de servicio en la biblioteca cliente de Perl:

  1. Crea credenciales de OAuth2:

    Sigue las instrucciones para generar una cuenta de servicio y un archivo *.JSON.

  2. Configura la biblioteca cliente:

    Establece la ruta de acceso JSON de la clave privada en tu configuración. Si usas un archivo googleads.properties, agrega lo siguiente:

    jsonKeyFilePath=PRIVATE_KEY_FILE_PATH
    

    Si usas variables de entorno, agrega lo siguiente a tu configuración o entorno de Bash:

    export GOOGLE_ADS_JSON_KEY_FILE_PATH=PRIVATE_KEY_FILE_PATH
    

    Consulta la guía del flujo de trabajo de la cuenta de servicio para obtener más información.

Flujo de autenticación de usuario único

Este flujo de trabajo se puede usar si no puedes usar cuentas de servicio. Este flujo de trabajo requiere dos pasos de configuración:

  1. 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.
  2. El usuario ejecuta el ejemplo de código de generate_user_credentials.pl para autorizar tu aplicación a administrar todas sus cuentas de Google Ads en su nombre.

En los siguientes pasos, se ejecuta un ejemplo de código interactivo, que luego requiere que proporciones entrada.

  1. En una terminal, ejecuta el ejemplo generate_user_credentials.pl en el directorio examples. Puedes modificar los valores de INSERT_XXX_HERE en el ejemplo antes de ejecutarlo o usar los argumentos de línea de comandos -client_id para el ID de cliente y -client_secret para el secreto del cliente.

    perl generate_user_credentials.pl -client_id {client_id} -client_secret {client_secret}
    
  2. En este ejemplo de código, se te solicita que visites una URL en la que debes autorizar a la app para que acceda a tu cuenta de Google Ads en tu nombre.

    Paste this url in your browser:
    https://accounts.google.com/o/oauth2/v2/auth?response_type=code&access_type=offline&client_id=...
    

    Navega a la URL en una sesión de navegador privada o en una ventana de incógnito. Accede con la Cuenta de Google que usas para ingresar a Google Ads. Por lo general, se trata de una cuenta de correo electrónico que tiene acceso a una cuenta de administrador de Google Ads que contiene todas las cuentas que necesitas administrar dentro de su jerarquía de cuentas. Haz clic en Continuar en la pantalla de consentimiento de OAuth 2.0.

    Pantalla de consentimiento de OAuth 2.0

    Se te redireccionará a una página con un mensaje que indica que la autorización se realizó correctamente.

    Authorization code was successfully retrieved.
    
  3. Regresa a la consola en la que ejecutas el ejemplo de código. Verás que el ejemplo de código se completó y muestra tu token de actualización y algunas instrucciones, seguidas de las instrucciones que deberás seguir para configurar la biblioteca cliente:

    Replace the following keys and values in your googleads.properties configuration file:
    
    clientId==***********************apps.googleusercontent.com
    clientSecret=****
    refreshToken=****
    
  4. Presiona Ctrl + C para detener el proceso. Luego, copia el token de actualización generado junto con el ID de cliente y el secreto del cliente en tu archivo googleads.properties o guárdalo en otro lugar para usarlo si instancias la biblioteca en el tiempo de ejecución.

La biblioteca se puede inicializar con las credenciales de OAuth 2.0 del usuario configurando lo siguiente en googleads.properties:

clientId=OAUTH_CLIENT_ID
clientSecret=OAUTH_CLIENT_SECRET
refreshToken=REFRESH_TOKEN
developerToken=DEVELOPER_TOKEN
loginCustomerId=LOGIN_CUSTOMER_ID

Como alternativa, usa variables de entorno:

export GOOGLE_ADS_CLIENT_ID=OAUTH_CLIENT_ID
export GOOGLE_ADS_CLIENT_SECRET=OAUTH_CLIENT_SECRET
export GOOGLE_ADS_REFRESH_TOKEN=REFRESH_TOKEN
export GOOGLE_ADS_DEVELOPER_TOKEN=DEVELOPER_TOKEN
export GOOGLE_ADS_LOGIN_CUSTOMER_ID=LOGIN_CUSTOMER_ID

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 de varios usuarios

Este es el flujo de trabajo recomendado si tu app permite que los usuarios accedan y autoricen tu app para administrar sus cuentas de Google Ads en su nombre. Tu app compila y administra las credenciales de usuario de OAuth 2.0.

En el caso de Perl, por lo general, implementarías un flujo de aplicación web en el que tu aplicación controla el redireccionamiento de OAuth 2.0 y la administración de tokens. El usuario se autentica a través de tu aplicación, y esta almacena y usa el token de actualización del usuario para realizar llamadas a la API en su nombre.

La configuración para usar las credenciales obtenidas es la misma que para el flujo de autenticación de un solo usuario:

clientId=OAUTH_CLIENT_ID
clientSecret=OAUTH_CLIENT_SECRET
refreshToken=REFRESH_TOKEN
developerToken=DEVELOPER_TOKEN
loginCustomerId=LOGIN_CUSTOMER_ID

Como alternativa, usa variables de entorno:

export GOOGLE_ADS_CLIENT_ID=OAUTH_CLIENT_ID
export GOOGLE_ADS_CLIENT_SECRET=OAUTH_CLIENT_SECRET
export GOOGLE_ADS_REFRESH_TOKEN=REFRESH_TOKEN
export GOOGLE_ADS_DEVELOPER_TOKEN=DEVELOPER_TOKEN
export GOOGLE_ADS_LOGIN_CUSTOMER_ID=LOGIN_CUSTOMER_ID

Consulta la guía del flujo de trabajo de autenticación de varios usuarios para obtener más información.

¿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 Perl proporciona ejemplos que ilustran cómo controlar estos casos.

  1. El ejemplo de get_account_hierarchy.pl muestra cómo recuperar la lista de todas las cuentas de una cuenta de administrador de Google Ads.
  2. En el ejemplo de list_accessible_customers.pl, 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 el parámetro de configuración LoginCustomerId en el archivo googleads.properties o la variable de entorno GOOGLE_ADS_LOGIN_CUSTOMER_ID.