Flujo de trabajo de autenticación multiusuario

En el flujo de trabajo de autenticación multiusuario, compilas tu propio flujo de OAuth para autenticar a tus usuarios. En la documentación de Google Identity, se describen varios tipos de apps, junto con la configuración del proyecto de la consola de Google Cloud que necesitas para admitir cada tipo de app. La API de Google Ads admite todos estos tipos de aplicaciones. Los detalles técnicos adicionales que debes tener en cuenta son los siguientes:

  1. Configura tu aplicación para que solicite el siguiente permiso de OAuth 2.0:

    https://www.googleapis.com/auth/adwords
    
  2. Es posible que tu app deba realizar llamadas a la API en nombre del usuario mientras está sin conexión. Una situación común es descargar las métricas de la cuenta sin conexión para generar informes y realizar análisis de la cuenta. Por este motivo, recomendamos solicitar el acceso sin conexión de OAuth.

  3. Completa el proceso de verificación de la app de OAuth para que se verifique tu app.

Descripción general del flujo de trabajo

La implementación de un flujo de trabajo de autenticación multiusuario implica tres pasos principales:

  1. Redirige a los usuarios a la pantalla de consentimiento de OAuth: Redirige a cada usuario al extremo de autorización de OAuth 2.0 de Google solicitando el permiso https://www.googleapis.com/auth/adwords y el acceso sin conexión.
  2. Intercambia el código de autorización por tokens: Después de que el usuario otorga permiso, captura el código de autorización que se devolvió y cámbialo por un token de acceso y un token de actualización.
  3. Almacena tokens e inicializa el cliente en el tiempo de ejecución: Almacena de forma segura el token de actualización de cada usuario en tu almacén de datos y pasa las credenciales del usuario cuando inicialices tu instancia de GoogleAdsClient en el tiempo de ejecución.

Configuración de la biblioteca cliente

Una vez que autorices al usuario y obtengas las credenciales de OAuth 2.0, puedes configurar la biblioteca cliente siguiendo las instrucciones de la pestaña correspondiente a tu lenguaje de programación.

Java

Puedes inicializar tu instancia de GoogleAdsClient en el tiempo de ejecución con las credenciales que obtuviste del usuario cuyas cuentas estás llamando a las APIs.

UserCredentials credentials =
    UserCredentials.newBuilder()
        .setClientId("INSERT_OAUTH2_CLIENT_ID_HERE")
        .setClientSecret("INSERT_OAUTH2_CLIENT_SECRET_HERE")
        .setRefreshToken("INSERT_OAUTH2_REFRESH_TOKEN_HERE")
        .build();

// Creates a GoogleAdsClient with the provided credentials.
GoogleAdsClient client =
    GoogleAdsClient.newBuilder()
        // Sets the OAuth credentials which provide Google Ads account
        // access.
        .setCredentials(credentials)
        // Optional: sets the login customer ID.
        .setLoginCustomerId(Long.valueOf("INSERT_LOGIN_CUSTOMER_ID_HERE"))
        .build();

Consulta la guía de configuración para ver opciones adicionales.

.NET

Puedes inicializar tu instancia de GoogleAdsClient en el tiempo de ejecución con las credenciales que obtuviste del usuario cuyas cuentas estás llamando a las APIs.

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 ver opciones adicionales.

Python

Puedes inicializar tu instancia de GoogleAdsClient en el tiempo de ejecución con las credenciales que obtuviste del usuario cuyas cuentas estás llamando a las APIs.

from google.ads.googleads.client import GoogleAdsClient

credentials = {
    "login_customer_id": "INSERT_LOGIN_CUSTOMER_ID_HERE",
    "refresh_token": "INSERT_OAUTH2_REFRESH_TOKEN_HERE",
    "client_id": "INSERT_OAUTH2_CLIENT_ID_HERE",
    "client_secret": "INSERT_OAUTH2_CLIENT_SECRET_HERE",
    "use_proto_plus": True,
}

client = GoogleAdsClient.load_from_dict(credentials)

Consulta la guía de configuración para ver opciones adicionales.

PHP

Puedes inicializar tu instancia de GoogleAdsClient en el tiempo de ejecución con las credenciales que obtuviste del usuario cuyas cuentas estás llamando a las APIs.

$oAuth2Credential = (new OAuth2TokenBuilder())
    ->withClientId('INSERT_OAUTH2_CLIENT_ID_HERE')
    ->withClientSecret('INSERT_OAUTH2_CLIENT_SECRET_HERE')
    ->withRefreshToken('INSERT_OAUTH2_REFRESH_TOKEN_HERE')
    ->build();

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

Consulta la guía de configuración para ver opciones adicionales.

Ruby

Puedes inicializar tu instancia de GoogleAdsClient en el tiempo de ejecución con las credenciales que obtuviste del usuario cuyas cuentas estás llamando a las APIs.

client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
  config.client_id = 'INSERT_OAUTH2_CLIENT_ID_HERE'
  config.client_secret = 'INSERT_OAUTH2_CLIENT_SECRET_HERE'
  config.refresh_token = 'INSERT_OAUTH2_REFRESH_TOKEN_HERE'
  config.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
end

Consulta la guía de configuración para ver opciones adicionales.

Perl

Puedes inicializar tu instancia de GoogleAdsClient en el tiempo de ejecución con las credenciales que obtuviste del usuario cuyas cuentas estás llamando a las APIs.

my $api_client = Google::Ads::GoogleAds::Client->new({
  login_customer_id => "INSERT_LOGIN_CUSTOMER_ID_HERE"
});

my $oauth2_handler = $api_client->get_oauth2_applications_handler();
$oauth2_handler->set_client_id("INSERT_OAUTH2_CLIENT_ID_HERE");
$oauth2_handler->set_client_secret("INSERT_OAUTH2_CLIENT_SECRET_HERE");
$oauth2_handler->set_refresh_token("INSERT_OAUTH2_REFRESH_TOKEN_HERE");

Consulta la guía de configuración para ver opciones adicionales.

curl

Comienza por usar 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/token

Puedes usar el token de acceso en tus llamadas a la API. En el siguiente ejemplo, se muestra cómo ejecutar un informe de la 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"
}