Autorizzazione API

Questa documentazione fornisce istruzioni passo passo per configurare OAuth2.0 nella tua applicazione quando accedi alle API per gli hotel, come l'API Travel Partner e l'API Price Feeds. Per autorizzare la tua applicazione, consulta l'articolo Utilizzare OAuth 2.0 per accedere alle API di Google.

Impostazione OAuth 2.0

OAuth 2.0 richiede di identificarti utilizzando un service account associato al tuo Account Google. Il service account invia la tua chiave privata e riceve un token di accesso OAuth 2.0. Puoi quindi utilizzare questo token nelle chiamate alle API hotel per dati di sola lettura, come quelli dei prezzi, degli hotel e dei report diagnostici relativi al tuo feed prezzo dell'hotel.

I token di accesso sono validi per un'ora (3600 secondi).

Se avevi implementato ClientLogin, noterai che l'approccio per OAuth 2.0 è analogo, ma con le seguenti differenze:

  • L'applicazione utilizza un service account Google per accedere all'API.
  • Passi un token di accesso OAuth 2.0 nell'intestazione HTTP Authorization quando chiami le API.

Per configurare l'account per l'utilizzo di OAuth 2.0 con qualsiasi API Hotels, esegui i seguenti passaggi:

  1. Crea un nuovo progetto nella console Google Cloud

  2. Creare un service account e le relative credenziali

  3. Consenti all'account di servizio di accedere ai dati sugli hotel

Ogni passaggio è descritto nelle sezioni seguenti.

Passaggio 1: crea un nuovo progetto Google Cloud Console

La console Google Cloud viene utilizzata per gestire e visualizzare dati sul traffico, sull'autenticazione e sulla fatturazione per le API di Google utilizzate nei tuoi progetti.

Nella console Google Cloud, un progetto è una raccolta di impostazioni, credenziali e metadati riguardanti l'applicazione che stai sviluppando e che utilizza le API Google Developers e le risorse di Google Cloud.

La console Google Cloud viene utilizzata anche per generare credenziali API, attivare API e gestire le informazioni sui team e i dati di fatturazione associati al progetto.

Per creare un nuovo progetto nella console Google Cloud:

  1. Accedi al tuo account Gmail o Google.

  2. Apri la console Google Cloud. Se questo è il tuo primo progetto, nella visualizzazione principale viene mostrato un pulsante CREA PROGETTO:

    fig1

  3. Fai clic sul pulsante CREA PROGETTO. Nella console Google Cloud viene visualizzata la finestra di dialogo Nuovo progetto:

    fig2

    Inserisci un nome intuitivo per il nuovo progetto nel campo di immissione Nome progetto. Sotto il campo, la console Google Cloud genera un ID progetto, garantendo che l'ID sia univoco per tutti i progetti. Ad esempio, se inserisci "My New Project", Google Cloud Console assegna un ID come my-new-project-266022.

  4. Fai clic sul pulsante Crea per creare il nuovo progetto.

  5. Utilizza il menu di navigazione per selezionare API e servizi > Dashboard.

    fig3

    L'immagine seguente mostra il menu di navigazione in alto a sinistra nella console Google Cloud. Viene presentata la visualizzazione Dashboard del progetto:

    fig4

Per saperne di più, consulta la pagina Creare e gestire progetti.

Passaggio 2: crea un service account e genera le relative credenziali

Gli account di servizio vengono utilizzati nelle interazioni tra server, come quelle tra un'applicazione web e i tuoi dati sugli hotel.

Per creare e configurare un service account:

  1. Nella visualizzazione principale della console API di Google, fai clic su Credenziali nella barra di navigazione a sinistra. La console Google Cloud mostra la visualizzazione Credenziali.

    La visualizzazione Credenziali mostra gli ID client e le credenziali del tuo progetto. L'applicazione utilizza l'ID client quando richiede un token di accesso OAuth 2.0. I progetti nuovi non sono ancora associati a client o credenziali.

  2. Fai clic sul link Credenziali in API e servizi.

  3. Fai clic sul pulsante Crea credenziali e seleziona Chiave account di servizio dal filtro. Viene visualizzata la visualizzazione Crea chiave service account.

  4. Nel filtro Service account, seleziona Nuovo service account.

  5. Inserisci un nome e un ID per il service account.

    Puoi scegliere il nome che preferisci, ma l'ID account deve essere univoco per tutti i progetti. La console Google Cloud genera un ID account univoco per te, in base al nome che hai inserito.

  6. Seleziona JSON come tipo di chiave. JSON è obbligatorio.

  7. Fai clic su pulsante Crea. La console Google Cloud genera una coppia di chiavi privata o pubblica per il tuo progetto. La chiave privata viene salvata nel percorso predefinito in cui il browser archivia i download. Devi scaricare il file in formato .JSON.

    La chiave privata viene utilizzata negli script o in altre applicazioni che accedono alla tua API.

    Al termine della generazione delle chiavi, nella console Google Cloud viene visualizzato il messaggio "Service account creato".

  8. Fai clic sul pulsante Ok. La console Google Cloud torna alla visualizzazione Credenziali. Per confermare i dettagli del tuo service account e per visualizzare il service account associato al tuo progetto, fai clic su Gestisci service account in questa visualizzazione.

    All'account di servizio sono ora associate le seguenti credenziali:

    • ID client: identificatore univoco utilizzato dall'applicazione per richiedere un token di accesso OAuth 2.0.
    • Indirizzo email: un indirizzo email generato per l'account di servizio, nel formato "account_name@project_name.google.com.iam.gserviceaccount.com".
    • Fingerprint del certificato:ID della chiave privata che hai scaricato.

Per saperne di più, consulta l'articolo sull'utilizzo di OAuth 2.0 per applicazioni da server a server.

Passaggio 3: consenti all'account di servizio di accedere ai dati di Hotel Center

Il passaggio finale consiste nel fornire al nuovo service account l'accesso a Hotel Center. Il service account è identificato dall'indirizzo email generato che hai creato nel passaggio precedente. Devi fornire l'accesso a questo account utilizzando le impostazioni di condivisione di Hotel Center.

Se non disponi dell'accesso appropriato per aggiungere utenti all'account, contatta il team di Google Hotels utilizzando il modulo Contattaci e richiedi di configurare una proprietà per il tuo account. Puoi richiedere di rendere proprietari uno o più indirizzi email. Per ulteriori informazioni sull'accesso a Hotel Center, consulta Collegare Hotel Center e Google Ads.

Per consentire a un service account di accedere ai dati di Hotel Center:

  1. In una nuova finestra del browser, apri Hotel Center. fig7

  2. Nel banner Hotel Center by Google, fai clic sull'icona Aggiungi utente per aprire la finestra di dialogo di condivisione.

    fig8

  3. Nel campo Aggiungi altre persone, inserisci l'indirizzo email del service account che vuoi aggiungere al tuo account Hotel Center.

  4. Mantieni selezionata l'opzione Invia notifica.

  5. Seleziona Gestisci dal filtro.

  6. Fai clic sul pulsante Invita.

  7. Dopo aver aggiunto gli utenti a Hotel Center, l'account di servizio deve essere abilitato per l'accesso all'API entro 24 ore circa.

Una volta che Google ti ha notificato che il tuo account di servizio può accedere all'API, puoi iniziare ad accedere all'API con OAuth 2.0.

Come utilizzare OAuth 2.0

Per poter accedere all'API, la tua applicazione deve identificarsi con Google tramite la chiave privata e l'indirizzo email generati per l'account di servizio. Il meccanismo di autenticazione di Google scambia questa chiave con un token di accesso OAuth 2.0, che trasmetti nell'intestazione Authorization nelle chiamate API della tua app.

Consulta Prepararsi a effettuare una chiamata API delegata.

Ambiti

Di seguito sono riportati i SCOPES per l'API Hotels:

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

API Price Feeds: "https://www.googleapis.com/auth/travel-partner-price-upload"

Devi specificare il service account durante la creazione delle credenziali. Consulta Creare un service account e generare le relative credenziali.

Durante lo sviluppo dell'applicazione, assicurati di seguire le best practice per autenticare l'applicazione utilizzando le chiavi API. Ulteriori informazioni.

Esempio

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 Travel Partner

L'API Travel Partner consente ai partner di alloggi di recuperare le informazioni di Hotel Center e modificare i dati di Hotel Center per gestire account grandi o complessi.

Segui le istruzioni per la configurazione di OAUTH 2.0 per ottenere l'autorizzazione per l'API Travel Partner.

Quando crei un nuovo progetto per l'API Travel Partners, devi abilitare l'accesso al nuovo progetto della console Google Cloud.

Segui questi passaggi per attivare l'accesso all'API Travel Partner:

  1. Vai alla visualizzazione Dashboard del tuo progetto.

  2. Fai clic su Abilita API e servizi. Viene visualizzata la pagina di benvenuto della libreria API.

  3. Nel campo di ricerca, inizia a digitare "API Travel Partner" e poi la console visualizza un elenco di API corrispondenti al testo digitato.

  4. Fai clic sull'API corrispondente nella tabella. La console Google Cloud mostra una descrizione dell'API.

  5. Fai clic sul pulsante Abilita API per abilitare l'API in questione per il progetto.

Per saperne di più, consulta Attivazione e disattivazione dei servizi.

L'API Travel Partner è ora abilitata per il nuovo progetto del tuo Account Google.

L'ambito dell'API Travel Partner è: "https://www.googleapis.com/auth/travelpartner"

L'endpoint per l'API Travel Partner è: "https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"

API Price Feeds

L'API Price Feeds consente ai partner di alloggi di fornire dati sui prezzi personalizzati per ogni hotel. I partner per le strutture ricettive di Google possono utilizzare OAuth2.0 per autenticarsi e autorizzarsi durante il caricamento dei prezzi su Google. Segui le istruzioni di configurazione di OAUTH 2.0 per ottenere l'autorizzazione per l'API Price Feeds.

Punti da ricordare

Prendi nota delle importanti differenze nelle istruzioni di autorizzazione per l'API Price Feeds.

  1. I partner devono creare un nuovo progetto OAuth2.0 per i feed dei prezzi nella console Google Cloud utilizzando le stesse istruzioni fornite nella configurazione di OAuth 2.0.

  2. L'abilitazione dell'API Price Feeds nella console Google Cloud NON è obbligatoria e può essere ignorata. Ti servono solo un service account e una chiave, che utilizzerai per concedere al progetto Price Feeds l'accesso ai dati di Hotel Center. Segui i passaggi rimanenti descritti nella configurazione di OAuth 2.0 per completare la configurazione dell'API.

Recuperare il token di accesso OAuth 2.0 per i feed dei prezzi

Il passaggio successivo consiste nell'ottenere un token di accesso OAuth2.0 con l'ambito di caricamento del prezzo dell'alloggio utilizzando il file delle chiavi dell'account di servizio. Puoi autorizzare le richieste al tuo progetto Price Feeds seguendo le istruzioni fornite in Preparazione per effettuare una chiamata API delegata, quindi estrai il token di accesso dalle credenziali acquisite e impostalo nell'intestazione HTTP "Authorization".

L'ambito del caricamento dei prezzi degli alloggi è: "https://www.googleapis.com/auth/travel-partner-price-upload"

Carica prezzi

Dopo aver ottenuto il token di accesso, i partner possono caricare il proprio feed dei prezzi in modo simile all'utilizzo dell'IP statico per l'autenticazione e l'autorizzazione con la seguente modifica:

  • Imposta il token di accesso nell'intestazione 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>

Testare la configurazione di OAuth2.0 per l'API Price Feeds

Puoi testare la configurazione di OAuth2.0 caricando un file vuoto o con dati sui prezzi reali in uno qualsiasi dei percorsi di caricamento. Utilizza la tabella per controllare lo stato della risposta HTTP.

Stato risposta HTTP Messaggio
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

Risoluzione dei problemi

Stai riscontrando problemi? Prova a verificare rapidamente quanto segue.

  1. Hai creato un progetto nella console Google Cloud?
  2. Hai attivato il servizio nel tuo progetto?
  3. Hai scaricato un file .JSON, ovvero una chiave privata dopo aver fatto clic su Crea ID client e aver selezionato Service account?
  4. Hai ricevuto un indirizzo email per l'ID client del service account nel formato: nnnnnnn@app_name.google.com.iam.gserviceaccount.com?
  5. Hai condiviso il tuo account Hotel Ads Center con l'account di servizio facendo clic sul pulsante Condividi questo account?
  6. Hai inviato l'indirizzo email dell'account di servizio e il tuo ID partner al tuo Technical Account Manager (TAM)?
  7. Le tue chiamate API trasmettono un token acquisito di recente nell'intestazione Authorization?
  8. Il token è stato generato da più di un'ora?

La seguente tabella elenca alcuni errori comuni e le possibili soluzioni:

Errore Descrizione
Invalid credentials Questo può indicare diversi problemi. Se si verifica questo errore, controlla quanto segue:
  • Hai specificato un'intestazione Authorization con un token di connessione valido.
  • Il token di connessione è stato generato da meno di un'ora. Un token è valido solo per un'ora.
  • Hai specificato il nome partner corretto (con il parametro partner della stringa di query). Il valore è il tuo ID partner univoco, non il nome partner visualizzato in Hotel Ads Center. Se non conosci il tuo ID partner, contatta il Technical Account Manager (TAM).
Not found È molto probabile che il formato del tuo endpoint non sia corretto. Verifica di inviare una richiesta GET e che l'URL della richiesta sia valido (conforme alla sintassi dell'API a cui stai tentando di accedere).
Invalid string value Una o più parti dell'endpoint contengono una sintassi non valida. Ad esempio, potresti avere scritto in modo errato una parte del percorso. Verifica di aver utilizzato la combinazione corretta di trattini bassi, lettere maiuscole e minuscole e stringhe nell'intero percorso.
Unsupported output format Questo errore si verifica con la maggiore frequenza durante l'utilizzo dell'API Reports. Devi specificare "alt=csv" nell'URL della richiesta GET. L'API Reports non supporta il formato JSON.
AccessTokenRefreshError/Invalid grant Durante l'esecuzione dell'app, questo errore potrebbe essere causato da uno dei seguenti problemi:
  • L'indirizzo email del service account non è corretto. Controlla l'account email nella console Google Cloud e assicurati che sia autorizzato ad accedere alla tua API.
  • L'indirizzo email non ha accesso all'API. Verifica che l'indirizzo email sia autorizzato ad accedere ai dati degli hotel condivisi tramite Hotel Center.
  • Il file della chiave non è quello corretto per il service account. Utilizza la console Google Cloud per scaricare un nuovo certificato .JSON e assicurati che la tua app stia puntando a quello corretto.
HotelAdsAPIConnection object has no attribute credentials Durante l'esecuzione dell'app, il percorso del file .JSON non è corretto.
Invalid scope Quando esegui l'app, l'ambito dell'API deve essere uno dei seguenti:
  • "https://www.googleapis.com/auth/travelpartner"
  • "https://www.googleapis.com/auth/travel-partner-price-upload"
Forbidden Non hai l'autorizzazione per accedere all'ID account che stai utilizzando. Se sei proprietario di un subaccount, potresti non essere in grado di accedere all'ID account principale o root.