En el flujo de trabajo de autenticación de varios usuarios, compilas tu propio flujo de OAuth para autenticar a tus usuarios. Existen varios tipos de apps que se analizan como parte de la documentación de Identidad de Google y la configuración del proyecto de Google Cloud Console que necesitas para admitir ese tipo de app. La API de Google Ads admite todos estos tipos de aplicaciones. Estos son los detalles técnicos adicionales que debes tener en cuenta:
Para acceder a la API de Google Ads, debes configurar tu aplicación para que se autentique con el siguiente alcance:
https://www.googleapis.com/auth/adwords
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, te recomendamos que solicites acceso sin conexión de OAuth.
Debes completar el proceso de verificación de la app de OAuth y obtener la certificación de tu app.
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 la API.
UserCredentials credentials =
UserCredentials.newBuilder()
.setClientId(OAUTH_CLIENT_ID)
.setClientSecret(OAUTH_CLIENT_SECRET)
.setRefreshToken(REFRESH_TOKEN)
.build();
// Creates a GoogleAdsClient with the provided credentials.
GoogleAdsClient client =
GoogleAdsClient.newBuilder()
// Sets the developer token which enables API access.
.setDeveloperToken(DEVELOPER_TOKEN)
// Sets the OAuth credentials which provide Google Ads account access.
.setCredentials(credentials)
// Optional: sets the login customer ID.
.setLoginCustomerId(Long.valueOf(LOGIN_CUSTOMER_ID))
.build();
``` See the [configuration guide][java-config-guide] for additional options.
.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 la API.
GoogleAdsConfig googleAdsConfig = new GoogleAdsConfig()
{
DeveloperToken = DEVELOPER_TOKEN,
LoginCustomerId = LOGIN_CUSTOMER_ID,
OAuth2ClientId = OAUTH_CLIENT_ID,
OAuth2ClientSecret = OAUTH_CLIENT_SECRET,
OAuth2RefreshToken = REFRESH_TOKEN,
};
GoogleAdsClient googleAdsClient = new GoogleAdsClient(googleAdsConfig);
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 la API.
from google.ads.googleads.client import GoogleAdsClient
credentials = {
"developer_token": "INSERT_DEVELOPER_TOKEN_HERE",
"login_customer_id": "INSERT_LOGIN_CUSTOMER_ID_HERE",
"refresh_token": "REFRESH_TOKEN",
"client_id": "OAUTH_CLIENT_ID",
"client_secret": "OAUTH_CLIENT_SECRET"}
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 la API.
$oAuth2Credential = (new OAuth2TokenBuilder())
->withClientId('INSERT_CLIENT_ID_HERE')
->withClientSecret('INSERT_CLIENT_SECRET_HERE')
->withRefreshToken('INSERT_REFRESH_TOKEN_HERE')
->build();
$googleAdsClient = (new GoogleAdsClientBuilder())
->withOAuth2Credential($oAuth2Credential)
->withDeveloperToken('INSERT_DEVELOPER_TOKEN_HERE')
->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 la API.
client = Google::Ads::GoogleAds::GoogleAdsClient.new do |config|
config.client_id = 'INSERT_CLIENT_ID_HERE'
config.client_secret = 'INSERT_CLIENT_SECRET_HERE'
config.refresh_token = 'INSERT_REFRESH_TOKEN_HERE'
config.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE'
config.developer_token = 'INSERT_DEVELOPER_TOKEN_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 la API.
my $api_client = Google::Ads::GoogleAds::Client->new({
developer_token => "INSERT_DEVELOPER_TOKEN_HERE",
login_customer_id => "INSERT_LOGIN_CUSTOMER_ID_HERE"
});
my $oauth2_applications_handler = $api_client->get_oauth2_applications_handler();
$oauth2_applications_handler->set_client_id("INSERT_CLIENT_ID");
$oauth2_applications_handler->set_client_secret("INSERT_CLIENT_SECRET");
$oauth2_applications_handler->set_refresh_token("INSERT_REFRESH_TOKEN");
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://www.googleapis.com/oauth2/v3/token
Ahora 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ñas 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/v21/customers/CUSTOMER_ID/googleAds:searchStream \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "developer-token: DEVELOPER_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"
}