Questa documentazione fornisce istruzioni dettagliate per configurare OAuth 2.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 account di servizio associato al tuo Account Google. L'account di servizio invia la chiave privata in cambio di un token di accesso OAuth 2.0. Potrai quindi utilizzare questo token nelle chiamate alle API hotel per i 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 account di servizio Google per accedere all'API.
- Passi un token di accesso OAuth 2.0 nell'intestazione HTTP
Authorization
durante le chiamate API.
Per configurare l'account per l'utilizzo di OAuth 2.0 con qualsiasi API Hotels, svolgi i seguenti passaggi:
Ogni passaggio è descritto nelle sezioni seguenti.
Passaggio 1: crea un nuovo progetto nella console Google Cloud
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 relativi all'applicazione su cui stai lavorando e che utilizza le API Google Developers e le risorse di Google Cloud.
La console Google Cloud viene utilizzata anche per generare le credenziali API, attivare le API e gestire le informazioni sui team e i dati di fatturazione associati al progetto.
Per creare un nuovo progetto nella console Google Cloud:
Accedi al tuo account Gmail o Google.
Apri la console Google Cloud. Se questo è il tuo primo progetto, nella visualizzazione principale viene mostrato un pulsante CREA PROGETTO:
Fai clic sul pulsante CREA PROGETTO. Nella console Google Cloud viene visualizzata la finestra di dialogo Nuovo progetto:
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 "Il mio nuovo progetto", Google Cloud Console assegna un ID simile a
my-new-project-266022
.Fai clic sul pulsante Crea per creare il nuovo progetto.
Utilizza il menu di navigazione per selezionare API e servizi > Dashboard.
L'immagine seguente mostra il menu di navigazione in alto a sinistra della console Google Cloud. Viene visualizzata la visualizzazione Dashboard del progetto:
Per scoprire di più, consulta la pagina Creare e gestire progetti.
Passaggio 2: crea un account di servizio 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 account di servizio:
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 durante la richiesta di un token di accesso OAuth 2.0. I progetti nuovi non sono ancora associati a client o credenziali.
Fai clic sul link Credenziali in API e servizi.
Fai clic sul pulsante Crea credenziali e seleziona Chiave account di servizio dal filtro. Viene visualizzata la visualizzazione Crea chiave account di servizio.
Dal filtro Account di servizio, seleziona Nuovo account di servizio.
Inserisci un nome e un ID account di servizio.
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 inserito.
Seleziona JSON come tipo di chiave. Il formato JSON è obbligatorio.
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, la console Google Cloud mostra il messaggio "Account di servizio creato".
Fai clic sul pulsante OK. La console Google Cloud torna alla visualizzazione Credenziali. Per confermare i dettagli del tuo account di servizio e visualizzare l'account di servizio associato al progetto, fai clic su Gestisci account di servizio 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:l'ID della chiave privata che hai scaricato.
Per ulteriori informazioni, consulta l'articolo sull'utilizzo di OAuth 2.0 per applicazioni da server a server.
Passaggio 3: concedi all'account di servizio l'accesso ai dati di Hotel Center
Il passaggio finale consiste nel fornire al nuovo account di servizio l'accesso al tuo Hotel Center. L'account di servizio è 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 la proprietà per il tuo account. Puoi richiedere di inviare una o più email a un proprietario. Per ulteriori informazioni sull'accesso a Hotel Center, consulta Collegare Hotel Center e Google Ads.
Per consentire a un account di servizio di accedere ai dati di Hotel Center:
In una nuova finestra del browser, apri Hotel Center.
Nel banner di Hotel Center by Google, fai clic sull'icona Aggiungi utente per aprire la finestra di dialogo di condivisione.
Nel campo Aggiungi altre persone, inserisci l'indirizzo email dell'account del servizio che vuoi aggiungere a Hotel Center.
Mantieni selezionata l'opzione Invia notifica.
Seleziona Gestisci dal filtro.
Fai clic sul pulsante Invita.
Dopo aver aggiunto gli utenti a Hotel Center, l'account di servizio dovrebbe 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 la sezione 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 l'account di servizio quando crei le credenziali. Consulta Creare un account di servizio e generare le relative credenziali.
Durante lo sviluppo dell'applicazione, assicurati di seguire le best practice per autenticarla 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 alberghieri di recuperare le informazioni di Hotel Center e di modificare i dati di Hotel Center per gestire account di grandi dimensioni o complessi.
Segui le istruzioni per la configurazione di OAuth 2.0 per ottenere l'autorizzazione per la tua API Travel Partner.
Quando crei un nuovo progetto per l'API Travel Partners, devi attivare l'accesso al nuovo progetto della console Google Cloud.
Segui i passaggi per attivare l'accesso all'API Travel Partners:
Vai alla visualizzazione Dashboard del tuo progetto.
Fai clic su Abilita API e servizi. Viene visualizzata la pagina di benvenuto della libreria API.
Nel campo di ricerca, inizia a digitare "API Travel Partner". La console visualizza un elenco di API corrispondenti al testo digitato.
Fai clic sull'API corrispondente nella tabella. La console Google Cloud mostra una descrizione dell'API.
Fai clic sul pulsante Abilita API per abilitare l'API in questione per il progetto.
Per ulteriori informazioni, vedi Attivare e disattivare i servizi.
L'API Travel Partner è ora attivata 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 alberghieri di fornire dati sui prezzi personalizzati per ogni hotel. I partner per le strutture ricettive di Google possono utilizzare OAuth 2.0 per autenticarsi e autorizzarsi al caricamento dei prezzi su Google. Segui le istruzioni di configurazione di OAUTH 2.0 per ottenere l'autorizzazione per l'API Price Feeds.
Aspetti da ricordare
Tieni presente le differenze importanti nelle istruzioni di autorizzazione per l'API Price Feeds.
I partner devono creare un nuovo progetto OAuth 2.0 per i feed dei prezzi nella console Google Cloud seguendo le stesse istruzioni fornite nella configurazione di OAuth 2.0.
L'abilitazione dell'API Price Feeds nella console Google Cloud NOT è obbligatoria e può essere ignorata. Ti serve un solo account di servizio e una sola chiave, che potrai utilizzare per concedere al progetto Feed dei prezzi l'accesso ai dati di Hotel Center. Segui i passaggi rimanenti descritti nella configurazione di OAuth 2.0 per completare la configurazione dell'API.
Ottenere il token di accesso OAuth2.0 per i feed dei prezzi
Il passaggio successivo consiste nell'ottenere un token di accesso OAuth 2.0 con l'ambito di caricamento del prezzo degli alloggi utilizzando il file della chiave dell'account di servizio. Puoi autorizzare le richieste al tuo progetto Price Feeds seguendo le istruzioni riportate in Preparazione per effettuare una chiamata API delegata, quindi estrarre il token di accesso dalle credenziali acquisite e impostarlo nell'intestazione HTTP "Authorization"
.
L'ambito del caricamento del prezzo dell'alloggio è:
"https://www.googleapis.com/auth/travel-partner-price-upload"
Carica prezzi
Dopo aver ottenuto il token di accesso, i partner possono caricare il feed dei prezzi in modo simile all'utilizzo di un indirizzo 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 dei percorsi di caricamento. Utilizza la tabella per controllare lo stato della risposta HTTP.
Stato della 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.
- Hai creato un progetto nella console Google Cloud?
- Hai attivato il servizio nel tuo progetto?
- Hai scaricato un file
.JSON
(una chiave privata) dopo aver fatto clic su Crea ID client e aver selezionato Account di servizio? - Hai ricevuto un indirizzo email per l'ID client dell'account di servizio nel formato:
nnnnnnn@app_name.google.com.iam.gserviceaccount.com
? - Hai condiviso il tuo account Hotel Ads Center con l'account di servizio facendo clic sul pulsante Condividi questo account?
- Hai inviato l'indirizzo email dell'account di servizio e il tuo ID partner al tuo Technical Account Manager (TAM)?
- Nelle tue chiamate all'API trasmetti un token acquisito di recente nell'intestazione
Authorization
? - 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:
|
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 tua 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 motivi:
|
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:
|
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. |