In dieser Dokumentation finden Sie eine Schritt-für-Schritt-Anleitung zum Einrichten von OAuth 2.0 in Ihrer Anwendung für den Zugriff auf die Hotel-APIs wie die Travel Partner API und die Price Feeds API. Informationen zum Autorisieren Ihrer Anwendung finden Sie unter Mit OAuth 2.0 auf Google APIs zugreifen.
Einrichtung von OAuth 2.0
Für OAuth 2.0 müssen Sie sich über ein mit Ihrem Google-Konto verknüpftes Dienstkonto identifizieren. Das Dienstkonto sendet Ihren privaten Schlüssel. Im Gegenzug erhalten Sie ein Zugriffstoken für OAuth 2.0. Dieses Token können Sie dann bei Abfragen der Hotel-APIs für schreibgeschützte Daten angeben, z. B. zu Preis, Hotel und Diagnose Ihres Hotelpreisfeeds.
Zugriffstokens sind eine Stunde (3.600 Sekunden) lang gültig.
Die Vorgehensweise bei OAuth 2.0 ist ähnlich wie beim alten ClientLogin. Folgende Unterschiede sind jedoch zu beachten:
- Ihre Anwendung greift über ein Google-Dienstkonto auf die API zu.
- Beim Aufrufen von APIs übergeben Sie ein OAuth 2.0-Zugriffstoken im
Authorization-HTTP-Header.
So richten Sie Ihr Konto für die Verwendung von OAuth 2.0 mit einer beliebigen Hotels API ein:
Jeder dieser Schritte wird in den folgenden Abschnitten beschrieben.
Schritt 1: Neues Google Cloud Console-Projekt erstellen
Die Google Cloud Console wird zum Verwalten und Anzeigen von Informationen über Zugriffsdaten, Authentifizierung und Abrechnung für die Google APIs verwendet, die Sie für Ihre Projekte nutzen.
In der Google Cloud Console ist ein Projekt eine Sammlung von Einstellungen, Anmeldedaten und Metadaten der Anwendung, mit der Sie arbeiten und die Google Developer APIs und Google Cloud-Ressourcen nutzt.
Die Google Cloud Console wird auch zum Generieren von API-Anmeldedaten, zum Aktivieren von APIs und zum Verwalten von Team- und Abrechnungsinformationen verwendet, die mit Ihrem Projekt verknüpft sind.
So erstellen Sie ein neues Google Cloud Console-Projekt:
Melden Sie sich in Ihrem Gmail- oder Google-Konto an.
Öffnen Sie die Google Cloud Console. Wenn dies Ihr erstes Projekt ist, wird in der Hauptansicht die Schaltfläche PROJEKT ERSTELLEN angezeigt:
Klicken Sie auf die Schaltfläche PROJEKT ERSTELLEN. In der Google Cloud Console wird das Dialogfeld Neues Projekt angezeigt:
Geben Sie im Eingabefeld Projektname einen Namen für Ihr neues Projekt ein. Unter dem Feld generiert die Google Cloud Console eine Projekt-ID für Sie. Dabei ist die ID für alle Projekte eindeutig. Wenn Sie beispielsweise „Mein neues Projekt“ eingeben, weist die Google Cloud Console eine ID wie
my-new-project-266022zu.Klicken Sie auf die Schaltfläche Erstellen, um Ihr neues Projekt zu erstellen.
Wählen Sie im Navigationsmenü APIs & Dienste > Dashboard aus.
Das folgende Bild zeigt das Navigationsmenü oben links in der Google Cloud Console. Hier wird die Ansicht Dashboard für Ihr Projekt angezeigt:
Weitere Informationen finden Sie unter Projekte erstellen und verwalten.
Schritt 2: Dienstkonto mit Anmeldedaten erstellen
Dienstkonten werden für Interaktionen zwischen Servern verwendet, zum Beispiel zwischen einer Webanwendung und Ihren Hoteldaten.
So erstellen und konfigurieren Sie ein Dienstkonto:
Klicken Sie in der Hauptansicht der Google API Console im linken Navigationsmenü auf Anmeldedaten. Die Google Cloud Console zeigt die Ansicht Anmeldedaten an.
In der Ansicht Anmeldedaten werden die Client-IDs und Anmeldedaten Ihres Projekts angezeigt. Ihre Anwendung verwendet die Client-ID, wenn ein OAuth 2.0-Zugriffstoken angefordert wird. Neue Projekte haben noch keine Clients oder Anmeldedaten.
Klicken Sie auf den Link Anmeldedaten in APIs und Diensten.
Klicken Sie auf die Schaltfläche Anmeldedaten erstellen und wählen Sie aus dem Filter Dienstkontoschlüssel aus. Die Ansicht Dienstkontoschlüssel erstellen wird angezeigt.
Wählen Sie im Filter Dienstkonto die Option Neues Dienstkonto aus.
Geben Sie einen Dienstkontonamen und eine Dienstkonto-ID ein.
Der Name kann beliebig gewählt werden, die Konto-ID muss jedoch für alle Projekte eindeutig sein. Die Google Cloud Console generiert anhand des von Ihnen eingegebenen Namens eine eindeutige Konto-ID.
Wählen Sie JSON als Schlüsseltyp aus. JSON ist erforderlich.
Klicken Sie auf Erstellen. Die Google Cloud Console generiert einen öffentlichen und einen privaten Schlüssel für Ihr Projekt. Der private Schlüssel wird an dem Standardspeicherort Ihres Browsers für Downloads gespeichert. Sie müssen die Datei im
.JSON-Format herunterladen.Den privaten Schlüssel verwenden Sie für Ihre Skripts und andere Anwendungen, die auf Ihre API zugreifen.
In der Google Cloud Console wird die Meldung „Dienstkonto erstellt“ angezeigt, wenn die Schlüssel generiert wurden.
Klicken Sie auf die Schaltfläche OK. In der Google Cloud Console wird die Ansicht Anmeldedaten wieder angezeigt. Klicken Sie in dieser Ansicht auf Dienstkonten verwalten, um die Details zu Ihrem Dienstkonto zu bestätigen und das mit Ihrem Projekt verknüpfte Dienstkonto aufzurufen.
Dem Dienstkonto sind jetzt die folgenden Anmeldedaten zugeordnet:
- Client-ID: Eine eindeutige Kennung, die Ihre Anwendung zur Anforderung eines Zugriffstokens für OAuth 2.0 verwendet.
- E-Mail-Adresse:Eine generierte E-Mail-Adresse für das Dienstkonto im Format „kontoname@projektname.google.com.iam.gserviceaccount.com“.
- Zertifikatsfingerabdrücke:die ID des privaten Schlüssels, den Sie heruntergeladen haben.
Weitere Informationen finden Sie unter OAuth 2.0 für Server-zu-Server-Anwendungen verwenden.
Schritt 3: Dem Dienstkonto Zugriff auf Ihre Hotel Center-Daten gewähren
Im letzten Schritt gewähren Sie dem neuen Dienstkonto Zugriff auf Ihr Hotel Center. Das Dienstkonto wird durch die E-Mail-Adresse, die Sie im vorigen Schritt erstellt haben, identifiziert. Der Zugriff auf dieses Konto wird über die Freigabeeinstellungen im Hotel Center erteilt.
Wenn Sie nicht die erforderlichen Berechtigungen haben, um Nutzer dem Konto hinzuzufügen, wenden Sie sich über das Kontaktformular an das Google Hotels-Team und bitten Sie darum, die Inhaberschaft für Ihr Konto einzurichten. Sie können eine oder mehrere E-Mail-Adressen angeben, die als Inhaber hinzugefügt werden sollen. Weitere Informationen zum Zugriff auf das Hotel Center finden Sie unter Hotel Center und Google Ads verknüpfen.
So erteilen Sie einem Dienstkonto Zugriff auf Ihre Hotel Center-Daten:
Öffnen Sie das Hotel Center in einem neuen Browserfenster.
Klicken Sie im Banner Hotel Center by Google auf das Symbol „Nutzer hinzufügen“, um das Dialogfeld für die Freigabe zu öffnen.
Geben Sie im Feld Weitere Personen hinzufügen die E-Mail-Adresse des Dienstkontos ein, das Sie Ihrem Hotel Center hinzufügen möchten.
Lassen Sie die Option Personen benachrichtigen aktiviert.
Wählen Sie im Filter Verwalten aus.
Klicken Sie auf die Schaltfläche Einladen.
Nachdem Sie Nutzer Ihrem Hotel Center hinzugefügt haben, sollte Ihr Dienstkonto innerhalb von etwa 24 Stunden für den API-Zugriff aktiviert werden.
Sobald Sie die Bestätigung von Google über den API-Zugriff für Ihr Dienstkonto erhalten, können Sie mit OAuth 2.0 auf die API zugreifen.
OAuth 2.0 verwenden
Damit Sie Zugriff auf die API erhalten, benötigt Google die für das Dienstkonto generierte E-Mail-Adresse und den privaten Schlüssel, um Ihre Anwendung zu identifizieren. Durch die Authentifizierungsmechanismen von Google wird dieser Schlüssel gegen ein Zugriffstoken für OAuth 2.0 eingetauscht, das Sie bei den API-Aufrufen Ihrer Anwendung in den Authorization-Header eingeben.
Weitere Informationen finden Sie unter Delegierten API-Aufruf vorbereiten.
Bereiche
Im Folgenden finden Sie die SCOPES für die Hotels API:
Travel Partner API: "https://www.googleapis.com/auth/travelpartner"
Price Feeds API: "https://www.googleapis.com/auth/travel-partner-price-upload"
Sie sollten das Dienstkonto beim Erstellen der Anmeldedaten angeben. Weitere Informationen finden Sie unter Dienstkonto mit Anmeldedaten erstellen.
Folgen Sie bei der Entwicklung Ihrer Anwendung den Best Practices zur Authentifizierung Ihrer Anwendung mit API-Schlüsseln. Weitere Informationen
Beispiel
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)
Travel Partner API
Mit der Travel Partner API können Unterkunftspartner Hotel Center-Informationen abrufen und Hotel Center-Daten ändern, um große oder komplexe Konten zu verwalten.
Folgen Sie der Anleitung zur OAUTH 2.0-Einrichtung, um die Autorisierung für Ihre Travel Partner API zu erhalten.
Wenn Sie ein neues Projekt für die Travel Partner API erstellen, müssen Sie den Zugriff auf Ihr neues Google Cloud Console-Projekt aktivieren.
So aktivieren Sie den Zugriff auf die Travel Partners API:
Rufen Sie die Dashboard-Ansicht Ihres Projekts auf.
Klicken Sie auf APIs und Dienste aktivieren. Die Begrüßungsseite der API-Bibliothek wird angezeigt.
Geben Sie im Suchfeld „Travel Partner API“ ein. In der Console wird eine Liste mit APIs angezeigt, die Ihrer Eingabe entsprechen.
Klicken Sie in der Tabelle auf die übereinstimmende API. In der Google Cloud Console wird eine Beschreibung der API angezeigt.
Klicken Sie auf die Schaltfläche API aktivieren, um diese API für Ihr Projekt zu aktivieren.
Weitere Informationen finden Sie unter Dienste aktivieren und deaktivieren.
Die Travel Partner API ist jetzt für das neue Projekt Ihres Google-Kontos aktiviert.
Der Umfang der Travel Partner API ist:
"https://www.googleapis.com/auth/travelpartner"
Der Endpunkt für die Travel Partner API lautet:
"https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"
Price Feeds API
Mit der Price Feeds API können Unterkunftspartner benutzerdefinierte Preisdaten für jedes Hotel bereitstellen. Google-Partner für Unterkünfte können sich mit OAuth 2.0 authentifizieren und autorisieren, wenn sie Preise auf Google hochladen. Folgen Sie der OAUTH 2.0-Einrichtungsanleitung, um die Autorisierung für die Price Feeds API zu erhalten.
Wichtige Hinweise
Beachten Sie die wichtigen Unterschiede in den Autorisierungsanleitungen für die Price Feeds API.
Partner sollten in der Google Cloud Console ein neues OAuth 2.0-Projekt für Preis-Feeds erstellen. Verwenden Sie dazu dieselbe Anleitung wie unter OAuth 2.0 einrichten.
Die Aktivierung der Price Feeds API in der Google Cloud Console ist NICHT erforderlich und kann ignoriert werden. Sie benötigen nur ein Dienstkonto und einen Schlüssel. Mit demselben Dienstkonto und Schlüssel gewähren Sie dem Projekt „Preise“ Zugriff auf Ihre Hotel Center-Daten. Folgen Sie den restlichen Schritten in der OAuth 2.0-Einrichtung, um die Konfiguration Ihrer API abzuschließen.
OAuth 2.0-Zugriffstoken für Preis-Feeds abrufen
Im nächsten Schritt rufen Sie mit der Dienstkontoschlüsseldatei ein OAuth 2.0-Zugriffstoken mit dem Bereich „lodging price upload“ ab. Sie können Anfragen an Ihr Price Feeds-Projekt autorisieren, indem Sie der Anleitung unter Vorbereiten eines delegierten API-Aufrufs folgen. Extrahieren Sie dann das Zugriffstoken aus den abgerufenen Anmeldedaten und legen Sie es im HTTP-Header "Authorization" fest.
Der Umfang für den Upload von Unterkunftspreisen ist:
"https://www.googleapis.com/auth/travel-partner-price-upload"
Preise hochladen
Nachdem sie das Zugriffstoken erhalten haben, können Partner ihren Preisfeed ähnlich wie bei der Verwendung einer statischen IP-Adresse zur Authentifizierung und Autorisierung hochladen. Es gibt jedoch eine Änderung:
- Zugriffstoken im HTTP-Header
"Authorization"festlegen
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>OAuth 2.0-Einrichtung für die Price Feeds API testen
Sie können Ihre OAuth2.0-Einrichtung testen, indem Sie eine leere Datei oder echte Preisdaten auf einen der Uploadpfade hochladen. In der Tabelle können Sie den Status Ihrer HTTP-Antwort prüfen.
| HTTP-Antwortstatus | Nachricht |
|---|---|
| 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 |
Fehlerbehebung
Treten Probleme auf? Die folgende Checkliste kann Ihnen dabei helfen, Probleme zu lösen.
- Haben Sie ein Projekt in der Google Cloud Console erstellt?
- Haben Sie den Dienst in Ihrem Projekt aktiviert?
- Haben Sie eine
.JSON-Datei heruntergeladen, also einen privaten Schlüssel, nachdem Sie auf Client-ID erstellen geklickt und Dienstkonto ausgewählt haben? - Haben Sie eine Client-ID-E-Mail-Adresse für Ihr Dienstkonto erhalten, z. B. im Format
nnnnnnn@app_name.google.com.iam.gserviceaccount.com? - Haben Sie Ihr Hotel Ads Center-Konto mit dem Dienstkonto geteilt, indem Sie auf die Schaltfläche Dieses Konto teilen geklickt haben?
- Haben Sie die E-Mail-Adresse des Dienstkontos und Ihre Partner-ID an Ihren Technical Account Manager (TAM) gesendet?
- Wird bei Ihren API-Aufrufen ein kürzlich erhaltenes Token im
Authorization-Header übergeben? - Ist Ihr Token älter als 1 Stunde?
In der folgenden Tabelle sind einige häufige Fehler und mögliche Lösungen aufgeführt:
| Fehler | Beschreibung |
|---|---|
| Invalid credentials | Das kann verschiedene Gründe haben. Wenn dieser Fehler auftritt, überprüfen Sie Folgendes:
|
| Not found | Der Endpunkt ist höchstwahrscheinlich fehlerhaft formatiert. Prüfen Sie, ob Sie eine GET-Anfrage senden und ob die Anfrage-URL gültig ist. Sie entspricht der API-Syntax, auf die Sie zugreifen möchten. |
| Invalid string value | Ein oder mehrere Teile des Endpunkts enthalten eine ungültige Syntax. Möglicherweise ist ein Teil des Pfades falsch geschrieben. Prüfen Sie, ob Sie im gesamten Pfad die Unterstriche, Groß- und Kleinschreibung und den Wortlaut richtig verwendet haben. |
| Unsupported output format | Dieser Fehler tritt meistens bei Verwendung der Reports API auf. Sie müssen "alt=csv" in der URL Ihrer GET-Anfrage angeben. Die Reports API unterstützt nicht JSON. |
| AccessTokenRefreshError/Invalid grant | Dieser Fehler kann beim Ausführen Ihrer App durch Folgendes verursacht werden:
|
| HotelAdsAPIConnection object has no attribute credentials | Beim Ausführen der App ist der Pfad zu Ihrer .JSON-Datei falsch. |
| Invalid scope | Wenn Sie die App ausführen, muss Ihr API-Umfang einer der folgenden sein:
|
| Forbidden | Die von Ihnen verwendete Konto-ID hat keine Autorisierung für den Zugriff. Wenn Sie Inhaber eines Unterkontos sind, können Sie möglicherweise nicht auf die ID des übergeordneten oder Ursprungskontos zugreifen. |