En esta documentación, se proporcionan instrucciones paso a paso para configurar OAuth 2.0 en tu aplicación cuando accedas a las APIs de hoteles, como la API de Travel Partner y la API de Price Feeds. Consulta Usa OAuth 2.0 para acceder a las APIs de Google para autorizar tu aplicación.
Configuración de OAuth 2.0
OAuth 2.0 requiere que te identifiques con una cuenta de servicio asociada a tu Cuenta de Google. La cuenta de servicio envía tu clave privada a cambio de un token de acceso de OAuth 2.0. Luego, puedes usar este token en las llamadas a las APIs de hoteles para obtener datos de solo lectura, como los precios, los hoteles y los informes de diagnóstico sobre tu feed de precios de hoteles.
Los tokens de acceso son válidos durante una hora (3,600 segundos).
Si implementaste ClientLogin anteriormente, el enfoque de OAuth 2.0 es similar, con las siguientes diferencias:
- Tu aplicación usa una cuenta de servicio de Google para acceder a la API.
- Cuando llamas a las APIs, pasas un token de acceso de OAuth 2.0 en el encabezado HTTP
Authorization.
Para configurar tu cuenta para usar OAuth 2.0 con cualquier API de Hotels, sigue estos pasos:
Cada uno de estos pasos se describe en las siguientes secciones.
Paso 1: Crea un proyecto nuevo en la consola de Google Cloud
La consola de Google Cloud se usa para administrar y ver los datos de tráfico, la autenticación y la información de facturación de las APIs de Google que usan tus proyectos.
En la consola de Google Cloud, un proyecto es una colección de parámetros de configuración, credenciales y metadatos sobre la aplicación en la que estás trabajando y que usa las APIs de Google Developers y los recursos de Google Cloud.
La consola de Google Cloud también se usa para generar credenciales de API, activar APIs y administrar la información de facturación y del equipo asociada a tu proyecto.
Para crear un proyecto nuevo en la consola de Google Cloud, sigue estos pasos:
Accede a tu Cuenta de Google o de Gmail.
Abre Google Cloud Console Si es tu primer proyecto, en la vista principal, se muestra el botón CREATE PROJECT:
Haz clic en el botón CREAR PROYECTO. La consola de Google Cloud muestra el cuadro de diálogo Nuevo proyecto:
Ingresa un nombre descriptivo para tu proyecto nuevo en el campo de entrada Nombre del proyecto. Debajo del campo, la consola de Google Cloud genera un ID del proyecto para ti, lo que garantiza que el ID sea único en todos los proyectos. Por ejemplo, si ingresas "Mi proyecto nuevo", la consola de Google Cloud asigna un ID como
my-new-project-266022.Haz clic en el botón Crear para crear tu proyecto nuevo.
Usa el menú de navegación para seleccionar APIs & Services > Dashboard.
En la siguiente imagen, se muestra el menú de navegación en la parte superior izquierda de la consola de Google Cloud. Se mostrará la vista Panel de tu proyecto:
Para obtener más información, consulta Cómo crear y administrar proyectos.
Paso 2: Crea una cuenta de servicio y genera sus credenciales
Las cuentas de servicio se usan en las interacciones de servidor a servidor, como las que se producen entre una aplicación web y los datos de tu hotel.
Para crear y configurar una cuenta de servicio, sigue estos pasos:
En la vista principal de la consola de APIs de Google, haz clic en Credenciales en el menú de navegación de la izquierda. La consola de Google Cloud muestra la vista Credenciales.
En la vista Credenciales, se muestran los IDs de cliente y las credenciales de tu proyecto. Tu aplicación usa el ID de cliente cuando solicita un token de acceso de OAuth 2.0. Los proyectos nuevos aún no tienen clientes ni credenciales.
Haz clic en el vínculo Credenciales en APIs y servicios.
Haz clic en el botón Crear credenciales y selecciona Clave de cuenta de servicio en el filtro. Se mostrará la vista Crear clave de cuenta de servicio.
En el filtro Cuenta de servicio, selecciona Cuenta de servicio nueva.
Ingresa un nombre y un ID de cuenta de servicio.
El nombre puede ser el que quieras, pero el ID de la cuenta debe ser único en todos los proyectos. La consola de Google Cloud genera un ID de cuenta único para ti, según el nombre que ingresaste.
Selecciona JSON para el tipo de clave. Se requiere JSON.
Haz clic en el botón Create (Crear). La consola de Google Cloud genera un par de claves privadas o públicas para tu proyecto. La clave privada se guarda en la ubicación predeterminada en la que el navegador almacena las descargas. Debes descargar el archivo en formato
.JSON.Usas la clave privada en tus secuencias de comandos o en otras aplicaciones que acceden a tu API.
La consola de Google Cloud muestra el mensaje "Se creó la cuenta de servicio" cuando termina de generar las claves.
Haz clic en el botón Entendido. La consola de Google Cloud te redireccionará a la vista Credenciales. Para confirmar los detalles de tu cuenta de servicio y ver la cuenta de servicio asociada a tu proyecto, haz clic en Administrar cuentas de servicio en esta vista.
Ahora, la cuenta de servicio tiene las siguientes credenciales asociadas:
- ID de cliente: Es un identificador único que tu aplicación usa cuando solicita un token de acceso de OAuth 2.0.
- Dirección de correo electrónico: Es una dirección de correo electrónico generada para la cuenta de servicio, con el formato "nombre_de_cuenta@nombre_de_proyecto.google.com.iam.gserviceaccount.com".
- Huellas digitales del certificado: Es el ID de la clave privada que descargaste.
Si deseas obtener más información, consulta Cómo usar OAuth 2.0 para aplicaciones de servidor a servidor.
Paso 3: Otorga acceso a la cuenta de servicio a tus datos de Hotel Center
El último paso es otorgarle a la nueva cuenta de servicio acceso a tu cuenta de Hotel Center. La cuenta de servicio se identifica con la dirección de correo electrónico generada que creaste en el paso anterior. Para proporcionar acceso a esta cuenta, usa la configuración de uso compartido de Hotel Center.
Si no tienes el acceso adecuado para agregar usuarios a la cuenta, comunícate con el equipo de Hoteles de Google a través del formulario de contacto y solicita que se configure la propiedad de tu cuenta. Puedes solicitar que se envíe uno o más correos electrónicos a un propietario. Para obtener más información sobre el acceso a Hotel Center, consulta Cómo vincular Hotel Center y Google Ads.
Para otorgar acceso a una cuenta de servicio a tus datos de Hotel Center, sigue estos pasos:
En una nueva ventana del navegador, abre Hotel Center.
En el banner de Hotel Center de Google, haz clic en el ícono de agregar usuario para abrir el diálogo de uso compartido.
En el campo Agregar más personas, ingresa la dirección de correo electrónico de la cuenta de servicio que deseas agregar a tu Hotel Center.
Mantén seleccionada la opción Notificar a las personas.
Selecciona Administrar en el filtro.
Haz clic en el botón Invitar.
Después de agregar usuarios a tu cuenta de Hotel Center, la cuenta de servicio debería habilitarse para el acceso a la API en un plazo de 24 horas.
Después de que Google te notifique que el acceso a la API está habilitado para tu cuenta de servicio, podrás comenzar a acceder a la API con OAuth 2.0.
Cómo usar OAuth 2.0
Para acceder a la API, tu aplicación debe identificarse ante Google con la dirección de correo electrónico y la clave privada generadas de la cuenta de servicio. El mecanismo de autenticación de Google intercambia esta clave por un token de acceso de OAuth 2.0 que pasas en el encabezado Authorization en las llamadas a la API de tu app.
Consulta Preparación para realizar una llamada a la API delegada.
Permisos
A continuación, se indican los SCOPES de la API de Hotels:
API de Travel Partner: "https://www.googleapis.com/auth/travelpartner"
API de Feeds de precios: "https://www.googleapis.com/auth/travel-partner-price-upload"
Debes especificar la cuenta de servicio cuando crees las credenciales. Consulta Crea una cuenta de servicio y genera sus credenciales.
Cuando desarrolles tu aplicación, asegúrate de seguir las prácticas recomendadas para autenticarla con claves de API. Obtén más información.
Ejemplo
from google.oauth2 import service_account
from google.auth.transport.requests import Request
# You can use a single or multiple scopes
SCOPES =
['https://www.googleapis.com/auth/travel-partner-price-upload','https://www.googleapis.com/auth/travelpartner']
SERVICE_ACCOUNT_FILE = 'service_account_key_file.json'
cred = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE,
scopes=SCOPES)
cred.refresh(Request())
headers = {}
cred.apply(headers)
API de Travel Partner
La API de Travel Partner permite que los socios de alojamiento recuperen información de Hotel Center y modifiquen datos de Hotel Center para administrar cuentas grandes o complejas.
Sigue las instrucciones de configuración de OAUTH 2.0 para obtener autorización para tu API de Travel Partner.
Cuando creas un proyecto nuevo para la API de Travel Partners, debes habilitar el acceso a tu nuevo proyecto de la consola de Google Cloud.
Sigue estos pasos para habilitar el acceso a la API de Travel Partners:
Ve a la vista del panel de tu proyecto.
Haz clic en Habilitar APIs y servicios. Se mostrará la página de bienvenida de la biblioteca de APIs.
En el campo de búsqueda, comienza a escribir “API de Travel Partner” y, luego, la consola mostrará una lista de APIs que coincidan con lo que escribas.
Haz clic en la API que coincide en la tabla. En la consola de Google Cloud, se muestra una descripción de esa API.
Haz clic en el botón Habilitar API para habilitar esta API en tu proyecto.
Para obtener más información, consulta Habilita e inhabilita servicios.
La API de Travel Partner ahora está habilitada para el proyecto nuevo de tu Cuenta de Google.
El alcance de la API de Travel Partner es el siguiente:
"https://www.googleapis.com/auth/travelpartner"
El extremo de la API de Travel Partner es el siguiente:
"https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"
API de Feeds de precios
La API de Feeds de precios permite que los socios de alojamiento proporcionen datos de precios personalizados para cada hotel. Los socios de alojamiento de Google pueden usar OAuth 2.0 para autenticarse y autorizarse cuando suben precios a Google. Sigue las instrucciones de configuración de OAUTH 2.0 para obtener autorización para la API de Feeds de precios.
Puntos que debes recordar
Ten en cuenta las diferencias importantes en las instrucciones de autorización de la API de Feeds de precios.
Los socios deben crear un nuevo proyecto de OAuth 2.0 de Feeds de precios en la consola de Google Cloud siguiendo las mismas instrucciones que se proporcionan en la configuración de OAuth 2.0.
NO es necesario habilitar la API de Feeds de precios en la consola de Google Cloud, por lo que puedes ignorar este paso. Solo necesitas una cuenta y una clave de servicio, y luego usar la misma cuenta y clave de servicio para otorgar acceso al proyecto de Feeds de precios a tus datos de Hotel Center. Sigue los pasos restantes que se mencionan en la configuración de OAuth 2.0 para completar la configuración de tu API.
Obtén un token de acceso de OAuth 2.0 para los feeds de precios
El siguiente paso es obtener un token de acceso de OAuth 2.0 con el alcance de carga de precios de alojamiento usando el archivo de clave de la cuenta de servicio. Para autorizar solicitudes a tu proyecto de Feeds de precios, sigue las instrucciones que se proporcionan en Cómo prepararse para realizar una llamada a la API delegada. Luego, extrae el token de acceso de las credenciales adquiridas y configúralo en el encabezado HTTP "Authorization".
El alcance de la carga de precios de alojamiento es el siguiente:
"https://www.googleapis.com/auth/travel-partner-price-upload"
Sube precios
Después de obtener el token de acceso, los socios pueden subir su feed de precios de manera similar a como lo hacen con la IP estática para la autenticación y la autorización, con la siguiente modificación:
- Configura el token de acceso en el encabezado HTTP
"Authorization"
curl -X POST -H "Authorization: Bearer <access token>"
www.google.com/travel/lodging/uploads/accounts/<account_id>/ota/hotel_rate_amount_notif --data-binary @<price_feed_file_location>Prueba la configuración de OAuth 2.0 para la API de Feeds de precios
Puedes probar tu configuración de OAuth 2.0 subiendo un archivo vacío o con datos de precios reales a cualquiera de las rutas de carga. Usa la tabla para verificar el estado de la respuesta HTTP.
| Estado de la respuesta HTTP | Mensaje |
|---|---|
| 200 | Successful (OK) |
| 401 | Service account creation or access token fetch was not successful |
| 403 | Service account access wasn't granted to the Hotel Center account or both the service account key and access token has expired |
Solución de problemas
¿Tienes problemas? Una revisión rápida de los siguientes elementos puede resolver el problema.
- ¿Creaste un proyecto en la consola de Google Cloud?
- ¿Habilitaste el servicio en tu proyecto?
- ¿Descargaste un archivo
.JSON, una clave privada, después de hacer clic en Crear ID de cliente y seleccionar Cuenta de servicio? - ¿Recibiste una dirección de correo electrónico de ID de cliente de cuenta de servicio con el siguiente formato:
nnnnnnn@app_name.google.com.iam.gserviceaccount.com? - ¿Compartiste tu cuenta de Hotel Ads Center con la cuenta de servicio haciendo clic en el botón Compartir esta cuenta?
- ¿Enviaste la dirección de correo electrónico de la cuenta de servicio y tu ID de socio a tu administrador técnico de cuentas (TAM)?
- ¿Tus llamadas a la API pasan un token obtenido recientemente en el encabezado
Authorization? - ¿Tu token tiene más de 1 hora?
En la siguiente tabla, se enumeran algunos errores comunes y las posibles soluciones:
| Error | Descripción |
|---|---|
| Invalid credentials | Esto podría significar varias cosas. Si encuentras este error, verifica lo siguiente:
|
| Not found | Es probable que tu extremo tenga errores de formato. Comprueba que envías una solicitud GET y que la URL de la solicitud es válida (se ajusta a la sintaxis de la API a la que intentas acceder). |
| Invalid string value | Una o más partes del endpoint contienen sintaxis no válida. Por ejemplo, es posible que hayas escrito mal parte de la ruta de acceso. Verifica que hayas usado los guiones bajos, las mayúsculas y la redacción correctos en toda la ruta. |
| Unsupported output format | Este error suele ocurrir con más frecuencia cuando se usa la API de Reports. Debes
especificar "alt=csv" en la URL de tu solicitud GET. La API de Reports no admite JSON. |
| AccessTokenRefreshError/Invalid grant | Cuando ejecutas tu app, este error puede deberse a lo siguiente:
|
| HotelAdsAPIConnection object has no attribute credentials | Cuando ejecutas la app, la ruta de acceso a tu archivo .JSON es incorrecta. |
| Invalid scope | Cuando ejecutes la app, tu alcance de la API debe ser uno de los siguientes:
|
| Forbidden | El ID de la cuenta que usas es uno al que no tienes autorización para acceder. Si eres propietario de una subcuenta, es posible que no puedas acceder al ID de la cuenta principal o raíz. |