Cette documentation fournit des instructions détaillées pour configurer OAuth2.0 dans votre application lorsque vous accédez aux API d'hôtels, telles que l'API Travel Partner et l'API Price Feeds. Consultez Utiliser OAuth 2.0 pour accéder aux API Google pour autoriser votre application.
Configurer OAuth 2.0
OAuth 2.0 nécessite que vous vous identifiiez à l'aide d'un compte de service associé à votre compte Google. Le compte de service envoie votre clé privée en échange d'un jeton d'accès OAuth 2.0. Vous pouvez ensuite utiliser ce jeton dans les appels aux API Hotels pour autoriser l'accès en lecture seule à des informations telles que les prix, les hôtels et les données des rapports de diagnostic relatifs à votre flux Prix de l'hôtel.
Les jetons d'accès sont valides pendant une heure (3 600 secondes).
Si vous avez déjà installé ClientLogin, la méthode OAuth 2.0 est similaire, mais présente les différences suivantes:
- Votre application doit utiliser un compte de service Google pour accéder à l'API.
- Vous transmettez un jeton d'accès OAuth 2.0 dans l'en-tête HTTP
Authorization
lorsque vous appelez des API.
Pour configurer votre compte afin qu'il utilise OAuth 2.0 avec une API Hotels, procédez comme suit:
Toutes ces étapes sont décrites plus en détail dans les sections suivantes.
Étape 1: Créer un projet dans la console Google Cloud
La console Google Cloud permet de gérer et d'afficher les données de trafic et d'authentification, et les informations de facturation concernant les API Google que vos projets utilisent.
Dans la console Google Cloud, un projet est un ensemble de paramètres, d'identifiants et de métadonnées relatifs à l'application que vous développez, qui utilise les API de développeur Google et les ressources Google Cloud.
La console Google Cloud permet également de générer des identifiants pour les API, d'activer les API et de gérer les informations d'équipe et de facturation associées à votre projet.
Pour créer un projet dans la console Google Cloud:
Connectez-vous à votre compte Gmail ou Google.
Ouvrez Google Cloud Console. S'il s'agit de votre premier projet, la vue principale affiche un bouton CREATE PROJECT (CRÉER UN PROJET) :
Cliquez sur le bouton CRÉER UN PROJET. La console Google Cloud affiche la boîte de dialogue New Project (Nouveau projet) :
Dans le champ de saisie Nom du projet, fournissez un nom convivial pour votre nouveau projet. Sous le champ, la console Google Cloud génère un ID de projet, ce qui vous assure qu'il est unique parmi tous les projets. Par exemple, si vous saisissez "My New Project", la console Google Cloud attribue un ID tel que
my-new-project-266022
.Cliquez sur le bouton Créer.
Dans le menu de navigation, sélectionnez API et services > Tableau de bord.
L'image suivante montre le menu de navigation en haut à gauche de la console Google Cloud. La vue Tableau de bord de votre projet s'affiche:
Pour en savoir plus, consultez Créer et gérer des projets.
Étape 2: Créer un compte de service et générer ses identifiants
Les comptes de service sont utilisés lors des interactions entre serveurs, par exemple celles entre une application Web et les données de votre hôtel.
Pour créer et configurer un compte de service, procédez comme suit :
Dans la vue principale de la console Google APIs, cliquez sur Identifiants dans le menu de navigation de gauche. La console Google Cloud affiche la vue Identifiants.
La vue Identifiants contient les ID client et les identifiants de votre projet. Votre application utilise l'ID client lors de la demande d'un jeton d'accès OAuth 2.0. À ce stade, les nouveaux projets ne sont encore associés à aucun client ou identifiant.
Cliquez sur le lien Identifiants des API et services.
Cliquez sur le bouton Créer des identifiants, puis sélectionnez Clé de compte de service dans le filtre. La vue Créer une clé de compte de service s'affiche.
Dans le filtre Compte de service, sélectionnez Nouveau compte de service.
Saisissez un nom et un ID de compte de service.
Vous pouvez utiliser le nom de votre choix, mais l'ID du compte doit être unique parmi tous les projets. La console Google Cloud génère un ID de compte unique, basé sur le nom que vous avez saisi.
Sélectionnez JSON comme type de clé. Le format JSON est obligatoire.
Cliquez sur le bouton Créer. La console Google Cloud génère une paire de clés privée ou publique pour votre projet. La clé privée est enregistrée à l'emplacement de stockage des téléchargements par défaut du navigateur que vous utilisez. Vous devez télécharger le fichier au format
.JSON
.Vous utilisez la clé privée dans vos scripts ou autres applications ayant accès à votre API.
La console Google Cloud affiche le message "Compte de service créé" une fois la génération des clés terminée.
Cliquez sur le bouton J'ai compris. La console Google Cloud vous redirige vers la vue Identifiants. Pour confirmer les détails de votre compte de service et voir celui qui est associé à votre projet, cliquez sur Gérer les comptes de service dans cette vue.
Les identifiants suivants sont désormais associés au compte de service:
- ID client:identifiant unique que votre application utilise lors des demandes de jeton d'accès OAuth 2.0.
- Adresse e-mail:adresse e-mail générée pour le compte de service, au format "nom_compte@nom_projet.google.com.iam.gserviceaccount.com"
- Empreintes numériques de certificat:ID de la clé privée que vous avez téléchargée.
Pour en savoir plus, consultez Utiliser OAuth 2.0 pour les applications de serveur à serveur.
Étape 3: Autoriser le compte de service à accéder à vos données Hotel Center
La dernière étape consiste à fournir au nouveau compte de service l'accès à votre compte Hotel Center. Le compte de service est identifié par l'adresse e-mail générée à l'étape précédente. Vous accordez l'accès à ce compte à l'aide des paramètres de partage Hotel Center.
Si vous ne disposez pas des droits d'accès nécessaires pour ajouter des utilisateurs au compte, contactez l'équipe Google Hotels à l'aide du formulaire de contact et demandez à configurer la propriété de votre compte. Vous pouvez demander à ce qu'une ou plusieurs adresses e-mail soient définies comme propriétaires. Pour en savoir plus sur l'accès à Hotel Center, consultez Associer Hotel Center à Google Ads.
Pour autoriser un compte de service à accéder à vos données Hotel Center:
Dans une nouvelle fenêtre de navigateur, ouvrez Hotel Center.
Sur la bannière Hotel Center by Google, cliquez sur l'icône Ajouter un utilisateur pour ouvrir la boîte de dialogue de partage.
Dans le champ Ajouter d'autres personnes, saisissez l'adresse e-mail du compte de service que vous souhaitez ajouter à votre compte Hotel Center.
Laissez l'option Prévenir les contacts sélectionnée.
Sélectionnez Gérer dans le filtre.
Cliquez sur le bouton Inviter.
Une fois que vous avez ajouté des utilisateurs à votre compte Hotel Center, votre compte de service devrait être activé pour l'accès à l'API dans les 24 heures.
Une fois que Google vous a informé que l'accès à l'API est activé pour votre compte de service, vous pouvez commencer à y accéder avec OAuth 2.0.
Utiliser OAuth 2.0
Pour accéder à l'API, votre application doit s'identifier auprès de Google à l'aide de la clé privée et de l'adresse e-mail générées pour le compte de service. Le système d'authentification Google échange cette clé contre un jeton d'accès OAuth 2.0 à transmettre dans l'en-tête Authorization
des appels d'API de votre application.
Consultez Préparer un appel d'API délégué.
Niveaux d'accès
Voici les SCOPES
de l'API Hotels:
API Travel Partner: "https://www.googleapis.com/auth/travelpartner"
API Price Feeds: "https://www.googleapis.com/auth/travel-partner-price-upload"
Vous devez spécifier le compte de service lorsque vous créez les identifiants. Consultez la section Créer un compte de service et générer ses identifiants.
Lorsque vous développez votre application, veillez à suivre les bonnes pratiques pour l'authentifier à l'aide de clés API. En savoir plus
Exemple
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 permet aux partenaires d'hébergement de récupérer des informations Hotel Center et de modifier des données Hotel Center pour gérer des comptes volumineux ou complexes.
Suivez les instructions de configuration d'OAuth 2.0 pour obtenir l'autorisation de votre API Travel Partner.
Lorsque vous créez un projet pour l'API Travel Partners, vous devez activer l'accès à votre nouveau projet de la console Google Cloud.
Pour activer l'accès à l'API Travel Partner:
Accédez au tableau de bord de votre projet.
Cliquez sur Activer les API et les services. La page de bienvenue de la bibliothèque d'API s'affiche.
Dans le champ de recherche, commencez à saisir "API Travel Partner". La console affiche alors une liste d'API correspondant à votre saisie.
Cliquez sur l'API correspondante dans le tableau. La console Google Cloud affiche une description de cette API.
Cliquez sur le bouton Activer l'API pour activer cette API pour votre projet.
Pour en savoir plus, consultez la section Activer et désactiver des services.
L'API Travel Partner est désormais activée pour le nouveau projet de votre compte Google.
Champ d'application de l'API Travel Partner :
"https://www.googleapis.com/auth/travelpartner"
Le point de terminaison de l'API Travel Partner est le suivant :
"https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"
API Price Feeds
L'API Flux de prix permet aux partenaires d'hébergement de fournir des données sur les prix personnalisées pour chaque hôtel. Les partenaires d'hébergement Google peuvent utiliser OAuth2.0 pour s'authentifier et s'autoriser lorsqu'ils importent des prix sur Google. Suivez les instructions de configuration d'OAuth 2.0 pour obtenir l'autorisation de l'API Price Feeds.
Points à retenir
Notez les différences importantes dans les instructions d'autorisation de l'API Price Feeds.
Les partenaires doivent créer un projet OAuth2.0 pour les flux de prix dans la console Google Cloud en suivant les mêmes instructions que celles fournies dans la section Configuration OAuth 2.0.
L'activation de l'API Price Feeds dans la console Google Cloud n'est NOT obligatoire et peut être ignorée. Vous n'avez besoin que d'un seul compte de service et d'une seule clé, puis d'utiliser le même compte de service et la même clé pour accorder au projet de flux de prix l'accès à vos données Hotel Center. Suivez les étapes restantes mentionnées dans la configuration OAuth2.0 pour terminer la configuration de votre API.
Obtenir un jeton d'accès OAuth2.0 pour les flux de prix
L'étape suivante consiste à obtenir un jeton d'accès OAuth2.0 avec le champ d'application d'importation des prix des hébergements à l'aide du fichier de clé du compte de service. Vous pouvez autoriser les requêtes envoyées à votre projet de flux de prix en suivant les instructions fournies dans la section Préparation à un appel d'API délégué, puis en extrayant le jeton d'accès des identifiants acquis et en le définissant dans l'en-tête HTTP "Authorization"
.
Le champ d'application de l'importation des prix des hébergements est le suivant :
"https://www.googleapis.com/auth/travel-partner-price-upload"
Importer des prix
Une fois le jeton d'accès obtenu, les partenaires peuvent importer leur flux de prix de la même manière qu'ils utilisent une adresse IP statique pour l'authentification et l'autorisation, avec la modification suivante:
- Définir le jeton d'accès dans l'en-tête 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>
Tester la configuration OAuth2.0 pour l'API Price Feeds
Vous pouvez tester votre configuration OAuth2.0 en important un fichier vide ou contenant des données de prix réelles dans l'un des chemins d'importation. Utilisez le tableau pour vérifier l'état de votre réponse HTTP.
État de la réponse HTTP | Message |
---|---|
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 |
Dépannage
Vous rencontrez des problèmes ? La vérification rapide des éléments suivants vous permettra peut-être de le résoudre.
- Avez-vous créé un projet dans la console Google Cloud ?
- Avez-vous activé le service dans votre projet ?
- Avez-vous téléchargé un fichier
.JSON
(clé privée) après avoir cliqué sur Créer un ID client et sélectionné Compte de service ? - Avez-vous obtenu une adresse e-mail d'ID client de compte de service au format :
nnnnnnn@app_name.google.com.iam.gserviceaccount.com
? - Avez-vous partagé votre compte Hotel Ads Center avec le compte de service en cliquant sur le bouton Partager ce compte ?
- Avez-vous envoyé l'adresse e-mail de votre compte de service et votre ID de partenaire à votre responsable de compte technique (TAM) ?
- Vos appels d'API transmettent-ils un jeton récemment obtenu dans l'en-tête
Authorization
? - Votre jeton date-t-il de plus d'une heure ?
Le tableau suivant répertorie les erreurs courantes et les solutions possibles:
Erreur | Description |
---|---|
Invalid credentials | Plusieurs interprétations sont possibles. Si vous rencontrez cette erreur, vérifiez les points suivants :
|
Not found | Le format de votre point de terminaison est probablement incorrect. Vérifiez que vous envoyez une requête GET et que son URL est valide (conformément à la syntaxe de l'API à laquelle vous essayez d'accéder). |
Invalid string value | Une ou plusieurs parties du point de terminaison contiennent une syntaxe non valide. Par exemple, vous avez peut-être mal orthographié une partie du chemin. Vérifiez que vous avez utilisé les traits de soulignement, les majuscules et les termes corrects dans l'ensemble du chemin d'accès. |
Unsupported output format | Cette erreur se produit le plus souvent lorsque vous utilisez l'API Reports. Vous devez spécifier "alt=csv" dans l'URL de votre requête GET . L'API Reports n'est pas compatible avec JSON. |
AccessTokenRefreshError/Invalid grant | Lorsque vous exécutez votre application, cette erreur peut être due aux éléments suivants :
|
HotelAdsAPIConnection object has no attribute credentials | Lors de l'exécution de l'application, le chemin d'accès à votre fichier .JSON est incorrect. |
Invalid scope | Lorsque vous exécutez l'application, la portée de votre API doit être l'une des suivantes :
|
Forbidden | L'ID de compte que vous utilisez est un compte auquel vous n'êtes pas autorisé à accéder. Si vous êtes titulaire d'un sous-compte, vous risquez de ne pas pouvoir accéder à l'ID de compte parent ou racine. |