Autorización mediante la API

Esta documentación proporciona instrucciones paso a paso para configurar OAuth2.0 en tu cuando accedas a las APIs de hoteles, como la API de Travel Partner y Price API de feeds. Consulta Cómo usar 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 con 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 llamadas a las APIs de hoteles para datos de solo lectura, como precios, hoteles y Datos de informes de diagnóstico sobre tu feed de precios de hoteles.

Los tokens de acceso son válidos por una hora (3,600 segundos).

Si ya implementaste ClientLogin, 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.
  • Pasas un token de acceso de OAuth 2.0 en el encabezado HTTP Authorization cuando llamando a APIs.

Si deseas configurar tu cuenta para usar OAuth 2.0 con cualquier API de Hoteles, sigue estos pasos: pasos:

  1. Crea un proyecto nuevo en la consola de Google Cloud

  2. Crea una cuenta de servicio y sus credenciales

  3. Cómo permitir que tu cuenta de servicio acceda a los datos de tu hotel

Cada uno de estos pasos se describe en las siguientes secciones.

Paso 1: Crea un nuevo proyecto de la consola de Google Cloud

La consola de Google Cloud se usa para administrar y visualizar datos de tráfico. la autenticación y los datos de facturación de las APIs de Google en las que se administran usar.

En la consola de Google Cloud, un proyecto es un conjunto de parámetros de configuración, credenciales y metadatos sobre la aplicación en la que estás trabajando, que usa las APIs de Google Developer y los recursos de Google Cloud.

La consola de Google Cloud también se usa para generar credenciales de APIs, activar las APIs y la administración de los datos de facturación y del equipo asociados a tu proyecto.

Para crear un proyecto nuevo de la consola de Google Cloud, sigue estos pasos:

  1. Accede a tu Cuenta de Google o Gmail.

  2. Abre Google Cloud Console Si este es tu primer proyecto, la vista principal mostrará CREATE PROJECT. :

    fig1

  3. Haz clic en el botón CREAR PROYECTO. La consola de Google Cloud muestra Diálogo New Project:

    fig2

    Ingresa un nombre descriptivo para tu proyecto nuevo en Nombre del proyecto. campo de entrada. Debajo del campo, la consola de Google Cloud genera un proyecto el ID por ti y se asegura de que sea único en todos los proyectos. Por ejemplo: si escribes “My New Project”, la consola de Google Cloud asigna un ID como my-new-project-266022

  4. Haz clic en el botón Crear para crear un proyecto nuevo.

  5. En el menú de navegación, selecciona APIs y Servicios > Panel de control.

    fig3

    En la siguiente imagen, se muestra el menú de navegación en la esquina superior izquierda de la consola de Google Cloud. Se mostrará la vista Panel de tu proyecto:

    fig4

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 interacciones servidor a servidor, como las entre una aplicación web y los datos de tus hoteles.

Para crear y configurar una cuenta de servicio, sigue estos pasos:

  1. En la vista principal de la Consola de APIs de Google, haz clic en Credenciales en la navegación de la izquierda. La consola de Google Cloud muestra la sección Credenciales vista.

    La vista Credenciales muestra los IDs de cliente y las credenciales de tu en un proyecto final. Tu aplicación usa el ID de cliente cuando solicita un Token de acceso de OAuth 2.0. Los proyectos nuevos no tienen ningún cliente ni credencial aún.

  2. Haz clic en el vínculo Credenciales en las APIs y los servicios.

  3. Haz clic en el botón Crear credenciales y selecciona Clave de cuenta de servicio. del filtro. Se mostrará la vista Crear clave de cuenta de servicio.

  4. Desde el filtro Cuenta de servicio, selecciona Nueva cuenta de servicio.

  5. Ingresa un nombre y un ID para la cuenta de servicio.

    El nombre puede ser el que desees, 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 según el nombre que hayas ingresado.

  6. Selecciona JSON como tipo de clave. El JSON es obligatorio.

  7. Haz clic en el botón Crear. la consola de Google Cloud genera un clave pública para tu proyecto. La clave privada se guarda en la configuración la ubicación en la que tu navegador almacena las descargas. Debes descargar el archivo de formato .JSON.

    Usas la clave privada en tus secuencias de comandos o en otras aplicaciones que acceden tu API.

    En la consola de Google Cloud, se muestra el mensaje “Se creó la cuenta de servicio” mensaje cuando termine de generar las claves.

  8. Haz clic en el botón Entendido. La consola de Google Cloud te lleva al Credentials. Para confirmar los detalles de la cuenta de servicio Para ver la cuenta de servicio asociada con tu proyecto, haz clic en Administrar cuentas de servicio en esta vista.

    La cuenta de servicio ahora tiene las siguientes credenciales asociadas:

    • ID de cliente: Un identificador único que usa tu aplicación cuando solicitando un token de acceso de OAuth 2.0.
    • Dirección de correo electrónico: Una dirección de correo electrónico generada para la cuenta de servicio, en el formulario “account_name@account_name.google.com.iam.gserviceaccount.com”.
    • Huellas digitales del certificado: el ID de la clave privada que descargado.

Para obtener más información, consulta Cómo usar OAuth 2.0 para aplicaciones de servidor a servidor.

Paso 3: Otorga a la cuenta de servicio acceso a tus datos de Hotel Center

El último paso es proporcionarle a la nueva cuenta de servicio acceso a tu Hotel Center. La cuenta de servicio se identifica con la dirección de correo electrónico generada que que creaste en el paso anterior. Proporciona acceso a esta cuenta mediante 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 al equipo de Hoteles de Google mediante el formulario de contacto y una solicitud para configurar la propiedad de tu cuenta. Puedes solicitar que se envíen 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.

Sigue estos pasos para permitir que una cuenta de servicio acceda a tus datos de Hotel Center:

  1. En una nueva ventana del navegador, abre Hotel Center. fig7

  2. En el banner de Hotel Center de Google, haz clic en el ícono de agregar usuario. en el cuadro de diálogo para compartir.

    fig8

  3. 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.

  4. Mantén seleccionada la opción Notificar a las personas.

  5. Selecciona Administrar en el filtro.

  6. Haz clic en el botón Invitar.

  7. Después de agregar usuarios a Hotel Center, se habilitará tu cuenta de servicio para el acceso a la API en unas 24 horas.

Luego de que Google te notifique que tu servicio tiene habilitado el acceso a la API puedes 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 el la dirección de correo electrónico generada y la clave privada de la cuenta de servicio. mecanismo de autenticación intercambia esta clave por un token de acceso de OAuth 2.0 que pasas el encabezado Authorization en las llamadas a la API de tu app.

Consulta Prepárate para realizar una llamada a la API delegada.

Permisos

A continuación, se muestran los SCOPES para la API de Hotels:

API de Travel Partner: "https://www.googleapis.com/auth/travelpartner"

API de Travel Partner Pricing: "https://travelpartnerprices.googleapis.com"

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 autenticar tu aplicación 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://travelpartnerprices.googleapis.com','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 les permite a los socios de alojamiento recuperar Hotel Center información y cambiar los datos de Hotel Center para administrar cuentas grandes o complejas.

Sigue las instrucciones de configuración de OAuth 2.0 para obtener la autorización de tu API de Travel Partner.

Cuando creas un proyecto nuevo para la API de Travel Partners, debes habilitar el acceso a tu proyecto nuevo de la consola de Google Cloud.

Sigue los pasos para habilitar el acceso a la API de Travel Partners:

  1. Dirígete a la vista Panel de tu proyecto.

  2. Haz clic en Habilitar APIs y servicios. Se mostrará la bienvenida de la Biblioteca de APIs .

  3. En el campo de búsqueda, empieza a escribir “API de Travel Partner” y, luego, en la consola muestra una lista de APIs que coinciden con lo que escribes.

  4. Haz clic en la API que coincida con la tabla. La consola de Google Cloud muestra descripción general sobre esa API.

  5. Haz clic en el botón Habilitar API para habilitar esta API en tu proyecto.

Para obtener más información, consulta Inhabilita y habilita servicios.

Se habilitó la API de Travel Partner 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 Travel Partner Pricing

La API de Travel Partner Pricing permite a los socios de alojamiento enviar los precios de las propiedades a Google. También se conocen como precios de duración de la estadía (LoS).

Sigue las instrucciones de configuración de OAUTH 2.0 a fin de obtener autorización para la API de Travel Partner Pricing.

Cuando creas un proyecto nuevo para la API de precios de Travel Partners, debes hacer lo siguiente: habilita el acceso a tu nuevo proyecto de la consola de Google Cloud, que es similar al que se proporcionan en la API de Travel Partner.

Consulta los pasos proporcionados en la API de Travel Partner y sustitúyelos. todas las instancias de “API de Travel Partner” con “API de Travel Partner Pricing” para habilitar tu proyecto.

El alcance de la API de Travel Partner Pricing es el siguiente: "https://travelpartnerprices.googleapis.com"

Esta es la ruta de carga para la API de Travel Partner Pricing: "/travel/lodging/uploads/accounts/<account_id>/property_data"

API de Price Feeds

La API de feeds de precios permite a los socios de alojamiento proporcionar datos de precios personalizados para todos los hoteles. Los socios de alojamiento de Google pueden usar OAuth2.0 para autenticar y autorizan cuando suben los precios a Google. Sigue la guía de OAUTH 2.0 instrucciones de configuración para obtener la autorización de la API de Price Feeds.

Puntos que debes recordar

Ten en cuenta las diferencias importantes en las instrucciones de autorización para los feeds de precios. API de gcloud.

  1. Los socios deben crear un nuevo proyecto de OAuth2.0 de feeds de precios en la consola de Google Cloud con las mismas instrucciones que se proporcionan en la configuración de OAuth 2.0.

  2. NO es obligatorio habilitar la API de Price Feeds en la consola de Google Cloud. se pueden ignorar. Solo necesitas una cuenta de servicio y y, luego, usar el mismo la cuenta de servicio y clave para otorgar acceso a tu hotel al proyecto de feeds de precios de Google Cloud. Sigue los pasos restantes que se mencionan en la configuración de OAuth2.0 para completar la configuración de tu API.

Obtén un token de acceso de OAuth2.0 para los feeds de precios

El siguiente paso es obtener un token de acceso de OAuth2.0 con la carga del precio de alojamiento. permiso con el archivo de claves de la cuenta de servicio. Puedes autorizar solicitudes a tu proyecto de feeds de precios siguiendo las instrucciones que se indican en Preparación para realizar una llamada a la API delegada Luego, extrae el token de acceso de las credenciales adquiridas y, luego, configúralo el encabezado HTTP "Authorization".

El alcance de la carga del precio de alojamiento es el siguiente: "https://www.googleapis.com/auth/travel-partner-price-upload"

Subir precios

Después de obtener el token de acceso, los socios pueden subir su feed de precios similar al siguiente: usando una IP estática para la autenticación y autorización con el siguiente Modificación:

  • Establecer un 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 OAuth2.0 para la API de Price Feeds

Para probar tu configuración de OAuth2.0, sube un archivo vacío o con precios reales a cualquiera de las rutas de carga. Usa la tabla para verificar tu respuesta HTTP estado.

Estado de 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? Es posible que una revisión rápida de los siguientes elementos resuelva el problema.

  1. ¿Creaste un proyecto en la consola de Google Cloud?
  2. ¿Habilitaste el servicio en tu proyecto?
  3. Descargaste un archivo .JSON, que es una clave privada después de hacer clic ¿Crear ID de cliente y seleccionar Cuenta de servicio?
  4. ¿Obtuviste una dirección de correo electrónico con el ID de cliente de una cuenta de servicio de un formulario: ¿nnnnnnn@app_name.google.com.iam.gserviceaccount.com?
  5. ¿Compartiste tu cuenta de Hotel Ads Center con la cuenta de servicio haciendo clic en el botón Compartir esta cuenta?
  6. ¿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)?
  7. ¿Tus llamadas a la API pasan un token que obtuviste recientemente en el ¿El encabezado Authorization?
  8. ¿Tu token tiene más de 1 hora de antigüedad?

En la siguiente tabla, se enumeran algunos errores comunes y posibles soluciones:

Error Descripción
Invalid credentials Esto puede significar varias cosas. Si encuentras este error, verifica lo siguiente:
  • Especificaste un encabezado Authorization con un valor o el token del portador.
  • El token portador tiene menos de una hora de antigüedad. Un token solo es bueno durante una hora.
  • Especificaste el nombre de socio correcto (con el parámetro de cadena de consulta partner ). El valor es tu socio único ID, no el nombre de socio que aparece en Hotel Ads Center. Si no conozca tu ID de socio, comunícate con tu administrador técnico de cuentas (TAM).
Not found Es probable que el extremo tenga errores de formato. Verifica que estás enviando una solicitud GET y que la URL de la solicitud es válida (conforme a a la sintaxis de la API a la que intentas acceder).
Invalid string value Una o más partes del extremo contienen sintaxis no válida. Por ejemplo: es posible que hayas escrito mal parte de la ruta. Comprueba si usaste el método guiones bajos, mayúsculas y palabras en toda la ruta.
Unsupported output format Este error ocurre con mayor frecuencia cuando se usa la API de Reports. Debes especifica "alt=csv" en la URL de tu GET para cada solicitud. La API de informes no admite JSON.
AccessTokenRefreshError/Invalid grant Cuando ejecutas tu app, este error puede deberse a lo siguiente:
  • La dirección de correo electrónico de la cuenta de servicio es incorrecta. Revisa el correo electrónico cuenta en la Google en la consola de Cloud y asegúrate de que esté autorizado para acceder a tu API.
  • La dirección de correo electrónico no tiene acceso a la API. Verifica si el correo electrónico dirección está autorizada para acceder a los datos de tus hoteles que se comparten a través de Hotel Center.
  • El archivo de claves no es el correcto para la cuenta de servicio. Usa la consola de Google Cloud para descargar un .JSON nuevo y asegúrate de que tu app se dirija al correcto.
HotelAdsAPIConnection object has no attribute credentials Cuando se ejecuta la app, la ruta de acceso al archivo .JSON es incorrecta.
Invalid scope Cuando ejecutes la app, el alcance de tu API debe ser uno de los siguientes:
  • &quot;https://www.googleapis.com/auth/travelpartner&quot;
  • "https://travelpartnerprices.googleapis.com"
  • &quot;https://www.googleapis.com/auth/travel-partner-price-upload&quot;
Forbidden El ID de la cuenta que usas no tiene autorización para acceder. Si eres el propietario de una cuenta secundaria, tal vez no puedas acceder el ID de la cuenta principal o raíz.