Al igual que el flujo de trabajo de la cuenta de servicio, el flujo de autenticación de un solo usuario utiliza las funciones de autorización y administración de usuarios que ofrece la IU de Google Ads para otorgar a la app acceso a todas las cuentas necesarias. Este flujo de trabajo de autenticación tiene dos pasos:
- Otorgas acceso a un solo usuario a todas las cuentas de Google Ads que debe administrar la app.
- El usuario autoriza a tu app a administrar sus cuentas de Google Ads en su nombre, lo que le otorga acceso a todas las cuentas de Google Ads.
Como solo hay un usuario involucrado, puedes confiar en herramientas como la gcloud CLI o el ejemplo de código GenerateUserCredential en lugar de compilar tu propio flujo de autenticación de usuarios de OAuth 2.0.
Un caso de uso relacionado para este flujo de trabajo es cuando se puede acceder a tus cuentas a través de un puñado de accesos de usuario (por ejemplo, de 3 a 4 usuarios), por lo que el esfuerzo de desarrollo para compilar un flujo de trabajo de autenticación multiusuario de OAuth completo no se justifica en comparación con el esfuerzo para obtener la autorización de 3 a 4 usuarios con una herramienta de línea de comandos, como gcloud CLI.
Desventajas
Este flujo tiene algunas desventajas en comparación con el flujo de trabajo de la cuenta de servicio:
- El flujo de trabajo de autenticación de usuarios requiere que crees un ID de cliente de OAuth 2.0 y un secreto en la Consola de APIs de Google, lo que requiere más pasos de configuración que crear una cuenta de servicio y una clave.
- Si el usuario autorizado abandona el equipo o la empresa, es posible que tu app deje de funcionar si quitas al usuario de tus cuentas o inhabilitas la cuenta de usuario. Las cuentas de servicio no están vinculadas a usuarios individuales, por lo que se evita este riesgo.
- Para proteger la cuenta contra vulneraciones por software malicioso o suplantación de identidad (phishing), el usuario que autoriza la cuenta de Google Ads debe autenticarse con una llave de acceso cuando genera tokens de actualización de OAuth 2.0. Las cuentas de servicio no requieren llaves de acceso y son menos vulnerables a los ataques dirigidos a los usuarios, como el phishing.
Genera credenciales
Configura una pantalla de consentimiento de OAuth para tu aplicación y agrega
https://www.googleapis.com/auth/adwordscomo un permiso de OAuth 2.0. Consulta Configura tu pantalla de consentimiento de OAuth para obtener más detalles.Sigue las instrucciones para crear un ID de cliente y un secreto del cliente. Una vez que crees el cliente de OAuth 2.0, descarga su archivo JSON haciendo clic en el botón Descargar JSON en el diálogo de confirmación. Guarda el archivo como
credentials.json.Identifica una cuenta de usuario que tenga acceso a todas las cuentas de Google Ads que quieras administrar con tu app. Si hay cuentas sin acceso, otórgale acceso a la cuenta a ese usuario. Asegúrate de que esta cuenta de usuario haya configurado una llave de acceso (es posible que se aplique una demora de seguridad de 7 días antes de que una llave de acceso recién creada sea de confianza).
Descarga e instala gcloud CLI. Una vez instalada, verifica que la herramienta funcione correctamente ejecutando el comando
gcloud versiondesde un símbolo del sistema. El resultado es similar al siguiente:gcloud versionGoogle Cloud SDK 492.0.0 alpha 2024.09.06 beta 2024.09.06 bq 2.1.8 bundled-python3-unix 3.11.9 core 2024.09.06 enterprise-certificate-proxy 0.3.2 gcloud-crc32c 1.0.0Ejecuta la herramienta de gcloud CLI con el archivo
credentials.jsondel paso anterior para generar un token de actualización de OAuth 2.0. Es obligatorio pasar el parámetro--client-id-filepara que el token de actualización se emita en tu proyecto de la consola de APIs de Google, en lugar del proyecto predeterminado de gcloud CLI:gcloud auth application-default login \ --scopes=https://www.googleapis.com/auth/adwords,https://www.googleapis.com/auth/cloud-platform \ --client-id-file=PATH_TO_CREDENTIALS_JSONEl comando
gcloudabre una ventana de acceso a la Cuenta de Google en una nueva ventana del navegador y te guía por los pasos de autenticación de OAuth 2.0. Accede como el usuario que seleccionaste en los pasos anteriores y verifica tu identidad con una llave de acceso. Si tu app no está verificada, es posible que veas una pantalla de advertencia. En esos casos, puedes hacer clic en el vínculo Avanzado y en la opción Ir a PROJECT_NAME (no seguro).Después de verificar los permisos, haz clic en el botón Continuar para otorgar el permiso. El navegador se dirige a
https://cloud.google.com/sdk/auth_success, lo que indica que la autenticación se realizó correctamente. En la página, se muestra el siguiente mensaje:Authorization code granted. Close this tab.El comando
gcloudimprime el siguiente mensaje:Credentials saved to file: [/****/.config/gcloud/application_default_credentials.json]Abre el archivo
application_default_credentials.json. Su contenido es similar al siguiente:{ "account": "", "client_id": "******.apps.googleusercontent.com", "client_secret": "******", "refresh_token": "******", "type": "authorized_user", "universe_domain": "googleapis.com" }
Configuración de la biblioteca cliente
Selecciona la pestaña correspondiente a tu lenguaje de programación para obtener instrucciones sobre
cómo configurar tu biblioteca cliente. Si tu usuario autorizado accede a cuentas de cliente
a través de una cuenta de administrador de Google Ads, establece login-customer-id (o
loginCustomerId) en el ID de cliente de 10 dígitos de esa cuenta de administrador sin
guiones.
Java
Configura las siguientes claves en tu archivo ads.properties.
api.googleads.clientId=INSERT_OAUTH2_CLIENT_ID_HERE
api.googleads.clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
api.googleads.refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
Consulta la guía de configuración para conocer las opciones adicionales.
.NET
Establece las credenciales de OAuth 2.0 en la instancia de GoogleAdsConfig y úsalas
para inicializar el objeto GoogleAdsClient.
GoogleAdsConfig config = new GoogleAdsConfig()
{
OAuth2Mode = OAuth2Flow.APPLICATION,
OAuth2ClientId = "INSERT_OAUTH2_CLIENT_ID_HERE",
OAuth2ClientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE",
OAuth2RefreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE",
};
GoogleAdsClient client = new GoogleAdsClient(config);
Consulta la guía de configuración para conocer las opciones adicionales.
Python
Configura las siguientes claves en tu archivo google-ads.yaml.
client_id: INSERT_OAUTH2_CLIENT_ID_HERE
client_secret: INSERT_OAUTH2_CLIENT_SECRET_HERE
refresh_token: INSERT_OAUTH2_REFRESH_TOKEN_HERE
login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE
use_proto_plus: True
Consulta la guía de configuración para conocer las opciones adicionales.
PHP
Configura las siguientes claves en tu archivo google_ads_php.ini.
[GOOGLE_ADS]
loginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
[OAUTH2]
clientId = "INSERT_OAUTH2_CLIENT_ID_HERE"
clientSecret = "INSERT_OAUTH2_CLIENT_SECRET_HERE"
refreshToken = "INSERT_OAUTH2_REFRESH_TOKEN_HERE"
Consulta la guía de configuración para conocer las opciones adicionales.
Ruby
Configura las siguientes claves en tu archivo
google_ads_config.rb.
Google::Ads::GoogleAds::Config.new do |c|
c.client_id = 'INSERT_OAUTH2_CLIENT_ID_HERE'
c.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
c.refresh_token = 'INSERT_OAUTH2_REFRESH_TOKEN_HERE'
c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end
Consulta la guía de configuración para conocer las opciones adicionales.
Perl
Configura las siguientes claves en tu archivo googleads.properties.
clientId=INSERT_OAUTH2_CLIENT_ID_HERE
clientSecret=INSERT_OAUTH2_CLIENT_SECRET_HERE
refreshToken=INSERT_OAUTH2_REFRESH_TOKEN_HERE
loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
Consulta la guía de configuración para conocer las opciones adicionales.
curl
Para comenzar, usa un cliente HTTP para recuperar un token de acceso de OAuth 2.0. En esta guía,
se usa el comando curl.
curl \
--data "grant_type=refresh_token" \
--data "client_id=CLIENT_ID" \
--data "client_secret=CLIENT_SECRET" \
--data "refresh_token=REFRESH_TOKEN" \
https://oauth2.googleapis.com/tokenPuedes usar el token de acceso en tus llamadas a la API. En el siguiente ejemplo,
se muestra cómo ejecutar un informe de campaña con el método
GoogleAdsService.SearchStream para recuperar las
campañas de tu cuenta. En esta guía, no se incluyen los detalles de los informes.
curl -i -X POST \
https://googleads.googleapis.com/v26/customers/CUSTOMER_ID/googleAds:searchStream \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "login-customer-id: LOGIN_CUSTOMER_ID" \
--data-binary "@query.json"El contenido de query.json es el siguiente:
{
"query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}