Flujo de trabajo de autenticación multiusuario

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

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

    https://www.googleapis.com/auth/adwords
    
  • Es posible que tu app deba realizar llamadas a la API en nombre del usuario mientras este no tiene 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, te recomendamos que solicites acceso sin conexión de OAuth.

  • 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. Dirige a los usuarios a la pantalla de consentimiento de OAuth: Redirecciona a cada usuario al extremo de autorización de OAuth 2.0 de Google que solicita el permiso https://www.googleapis.com/auth/adwords y el acceso sin conexión. Los usuarios deben autenticarse con una llave de acceso para completar el flujo de autorización y generar un token de actualización.
  2. Intercambia el código de autorización por tokens: Después de que el usuario otorgue el 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 entorno 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 entorno de ejecución.

Configuración de la biblioteca cliente

Después de autorizar al usuario y obtener 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 entorno de ejecución con las credenciales que obtuviste del usuario cuyas cuentas usas para realizar llamadas a la API.

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 conocer las opciones adicionales.

.NET

Puedes inicializar tu instancia de GoogleAdsClient en el entorno de ejecución con las credenciales que obtuviste del usuario cuyas cuentas usas para realizar llamadas a la API.

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

Puedes inicializar tu instancia de GoogleAdsClient en el entorno de ejecución con las credenciales que obtuviste del usuario cuyas cuentas usas para realizar llamadas a la API.

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 conocer las opciones adicionales.

PHP

Puedes inicializar tu instancia de GoogleAdsClient en el entorno de ejecución con las credenciales que obtuviste del usuario cuyas cuentas usas para realizar llamadas a la API.

$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 conocer las opciones adicionales.

Ruby

Puedes inicializar tu instancia de GoogleAdsClient en el entorno de ejecución con las credenciales que obtuviste del usuario cuyas cuentas usas para realizar llamadas a la API.

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 conocer las opciones adicionales.

Perl

Puedes inicializar tu instancia de GoogleAdsClient en el entorno de ejecución con las credenciales que obtuviste del usuario cuyas cuentas usas para realizar llamadas a la API.

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 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/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 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"
}