Authentication

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 aplicación 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. Consulta 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 el tuyo 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.

La biblioteca de PHP se puede configurar de la siguiente manera:

$oAuth2Credential = (new OAuth2TokenBuilder())
    ->withJsonKeyFilePath('INSERT_PATH_TO_JSON_KEY_FILE_HERE')
    // Optional in v32.1.0 and later (defaults to
    // 'https://www.googleapis.com/auth/adwords').
    ->withScopes('https://www.googleapis.com/auth/adwords')
    ->build();

$googleAdsClient = (new GoogleAdsClientBuilder())
    ->withOAuth2Credential($oAuth2Credential)
    ->build();

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:

  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. Luego, ese usuario ejecuta una herramienta de línea de comandos, como GenerateUserCredentials, para autorizar tu app a administrar todas sus cuentas de Google Ads en su nombre.

La biblioteca se puede inicializar con las credenciales de OAuth 2.0 del usuario de la siguiente manera:

$oAuth2Credential = (new OAuth2TokenBuilder())
    ->withClientId('INSERT_CLIENT_ID_HERE')
    ->withClientSecret('INSERT_CLIENT_SECRET_HERE')
    ->withRefreshToken('INSERT_REFRESH_TOKEN_HERE')
    ->build();

$googleAdsClient = (new GoogleAdsClientBuilder())
    ->withOAuth2Credential($oAuth2Credential)
    ->withLoginCustomerId('INSERT_LOGIN_CUSTOMER_ID_HERE')
    ->build();

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 autoricen tu app para administrar sus cuentas de Google Ads en su nombre. Tu app compila y administra de forma dinámica las credenciales de usuario de OAuth 2.0 para cada sesión de usuario autenticado. La biblioteca se puede inicializar con las credenciales del usuario que accedió de la siguiente manera:

// Construct credentials dynamically per authenticated user session.
$oAuth2Credential = (new OAuth2TokenBuilder())
    ->withClientId('INSERT_CLIENT_ID_HERE')
    ->withClientSecret('INSERT_CLIENT_SECRET_HERE')
    ->withRefreshToken($userRefreshToken)
    ->build();

$googleAdsClient = (new GoogleAdsClientBuilder())
    ->withOAuth2Credential($oAuth2Credential)
    ->withLoginCustomerId($userLoginCustomerId)
    ->build();

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

Credencial predeterminada de la aplicación

La biblioteca cliente de PHP también admite la autenticación con credenciales predeterminadas de la aplicación (ADC). Cuando no se configuran credenciales del modo de aplicación (clientId, clientSecret, refreshToken) ni del modo de cuenta de servicio (jsonKeyFilePath) en OAuth2TokenBuilder, la llamada a build() automáticamente recurre a las credenciales predeterminadas de la aplicación:

$oAuth2Credential = (new OAuth2TokenBuilder())->build();

$googleAdsClient = (new GoogleAdsClientBuilder())
    ->withOAuth2Credential($oAuth2Credential)
    ->withLoginCustomerId('INSERT_LOGIN_CUSTOMER_ID_HERE')
    ->build();

Administrar 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 PHP proporciona los siguientes ejemplos de código que ilustran cómo controlar estos casos:

  1. El ejemplo de código GetAccountHierarchy muestra cómo recuperar la lista de todas las cuentas de una cuenta de administrador de Google Ads.
  2. El ejemplo de código de ListAccessibleCustomers 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.