Flujo de trabajo de la cuenta de servicio

En esta guía, se explica cómo acceder a la API de Google Ads con cuentas de servicio.

Una cuenta de servicio es una cuenta que pertenece a tu app, no a un usuario final individual. Las cuentas de servicio emplean un flujo de OAuth 2.0 que no requiere autorización humana, sino que utiliza un archivo de claves al que solo puede acceder tu app.

El uso de cuentas de servicio proporciona dos beneficios clave:

  • La autorización para el acceso a la API de Google Ads a las cuentas de Google Ads se realiza como un paso de configuración, aprovechando las funciones de autorización y administración de cuentas que ofrece la IU de Google Ads. Esto ahorra el esfuerzo de los desarrolladores, ya que no tienen que compilar flujos de OAuth 2.0 ni lidiar con complicaciones que involucran la interacción del usuario, el almacenamiento de credenciales del usuario y la administración de tokens.

  • La autorización para acceder a las cuentas de Google Ads no está vinculada a las credenciales de usuarios individuales, lo que puede ser útil en los casos en que se espera que dicha autorización continúe incluso si el empleado que autorizó originalmente el acceso abandona el equipo o la empresa.

Configuración del acceso a la cuenta

  1. Comienza por crear una cuenta de servicio y credenciales.

    Descarga la clave de la cuenta de servicio en formato JSON y anota el ID y el correo electrónico de la cuenta de servicio.

  2. Accede a tu cuenta de Google Ads como administrador. Navega a Administrador > Acceso y seguridad.

  3. Haz clic en el botón + en la pestaña Usuarios.

  4. Escribe el correo electrónico de la cuenta de servicio en la casilla de entrada Correo electrónico. Selecciona el nivel de acceso a la cuenta adecuado (ten en cuenta que las cuentas de servicio no admiten el nivel de acceso Solo correo electrónico) y haz clic en el botón Agregar cuenta.

  5. Se otorga acceso a la cuenta de servicio.

  6. Opcional: De forma predeterminada, no puedes otorgar acceso de administrador a una cuenta de servicio. Sigue el principio de privilegio mínimo y otorga acceso de administrador solo si tus llamadas a la API lo requieren. Puedes actualizar el acceso de la siguiente manera:

    • Haz clic en la flecha del menú desplegable junto al nivel de acceso de la cuenta de servicio en la columna Nivel de acceso.
    • Selecciona Administrador en la lista desplegable.

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 cuenta de servicio accede a cuentas de cliente a través de una cuenta de administrador de Google Ads (MCC), también debes establecer login-customer-id (o loginCustomerId) en el ID de cliente de 10 dígitos de esa cuenta de administrador sin guiones (consulta ID de cliente de acceso).

Java

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

api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH

Consulta la guía de configuración para obtener más detalles.

.NET

Establece OAuth2Mode y OAuth2SecretsJsonPath en la instancia GoogleAdsConfig y úsala para inicializar el objeto GoogleAdsClient.

GoogleAdsConfig config = new GoogleAdsConfig()
{
    OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
    OAuth2SecretsJsonPath = "JSON_KEY_FILE_PATH",
    // ...
};
GoogleAdsClient client = new GoogleAdsClient(config);

Consulta la guía de configuración para obtener más detalles.

Python

Establece la ruta de acceso JSON de la clave privada en tu configuración. Si usas un archivo google-ads.yaml, una cadena YAML o dict, agrega lo siguiente:

json_key_file_path: JSON_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=JSON_KEY_FILE_PATH

Consulta la guía de configuración para obtener más detalles.

PHP

Configura las siguientes claves en tu archivo google_ads_php.ini.

[OAUTH2]
; For service account flow.
jsonKeyFilePath = "JSON_KEY_FILE_PATH"
scopes = "https://www.googleapis.com/auth/adwords"

Consulta la guía de configuración para obtener más detalles.

Ruby

Configura las siguientes claves en tu google_ads_config.rb.

c.keyfile = 'JSON_KEY_FILE_PATH'

Consulta la guía de configuración para obtener más detalles.

Perl

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

jsonKeyFilePath=JSON_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=JSON_KEY_FILE_PATH

Consulta la guía de configuración para obtener más detalles.

curl

Para comenzar, establece la cuenta de servicio como las credenciales activas en la CLI de gcloud.

gcloud auth login --cred-file=JSON_KEY_FILE_PATH

A continuación, recupera un token de acceso de OAuth 2.0 para la API de Google Ads.

gcloud auth \
  print-access-token \
  --scopes='https://www.googleapis.com/auth/adwords'

Puedes 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 abordan los detalles de la generación de informes.

curl -i -X POST \
  https://googleads.googleapis.com/v25/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"
}