In dieser Dokumentation finden Sie eine detaillierte Anleitung zum Einrichten von OAuth 2.0 in Ihrer Anwendung für den Zugriff auf Hotel-APIs wie die Travel Partner API und die Price Feeds API. Weitere Informationen zum Autorisieren Ihrer Anwendung finden Sie im Hilfeartikel Mit OAuth 2.0 auf Google APIs zugreifen.
Einrichtung von OAuth 2.0
OAuth 2.0 erfordert, dass Sie sich über ein mit Ihrem Google-Konto verknüpftes Dienstkonto identifizieren. Das Dienstkonto sendet Ihren privaten Schlüssel im Austausch gegen ein OAuth 2.0-Zugriffstoken. Dieses Token können Sie dann bei Abfragen der Hotel-APIs für schreibgeschützte Daten verwenden, 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 geben Sie ein OAuth 2.0-Zugriffstoken im
Authorization
-HTTP-Header ein.
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 Ansehen von Zugriffsdaten, Authentifizierungs- und Abrechnungsinformationen für die Google APIs verwendet, die Sie in Ihren Projekten verwenden.
In der Google Cloud Console ist ein Projekt eine Sammlung von Einstellungen, Anmeldedaten und Metadaten der Anwendung, an der Sie arbeiten und die Google Developer APIs und Google Cloud-Ressourcen nutzt.
In der Google Cloud Console können Sie auch API-Anmeldedaten generieren, APIs aktivieren und mit Ihrem Projekt verbundene Informationen zu Team und Abrechnung verwalten.
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 ERSTEHEN 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-266022
zu.Klicken Sie auf die Schaltfläche Erstellen, um Ihr neues Projekt zu erstellen.
Wählen Sie im Navigationsmenü APIs & Dienste > Dashboard aus.
Die folgende Abbildung 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. In der Google Cloud Console wird die Ansicht Anmeldedaten angezeigt.
In der Ansicht Anmeldedaten werden die Client-IDs und Anmeldeinformationen 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 im 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 als Schlüsseltyp JSON aus. JSON ist erforderlich.
Klicken Sie auf Erstellen. Die Google Cloud Console generiert ein Schlüsselpaar aus einem privaten und einem öffentlichen 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 Scripts und anderen Anwendungen, die auf Ihre API zugreifen.
In der Google Cloud Console wird die Meldung „Dienstkonto erstellt“ angezeigt, sobald die Schlüssel generiert wurden.
Klicken Sie auf die Schaltfläche OK. Sie werden in der Google Cloud Console zur Ansicht Anmeldedaten zurückgeleitet. 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 OAuth 2.0-Zugriffstokens 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-Konto. 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 berechtigt sind, dem Konto Nutzer hinzuzufügen, wenden Sie sich über das Kontaktformular an das Google Hotels-Team und bitten Sie um die Einrichtung einer Inhaberschaft für Ihr Konto. 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 auf dem Banner Hotel Center by Google auf das Symbol „Nutzer hinzufügen“, um das Freigabedialogfeld 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 Ihrem Hotel Center Nutzer hinzugefügt haben, wird Ihr Dienstkonto innerhalb von etwa 24 Stunden für den API-Zugriff aktiviert.
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-Abrufen Ihrer Anwendung in den Authorization
-Header eingeben.
Weitere Informationen finden Sie unter Delegierten API-Aufruf vorbereiten.
Ebenen
Die folgenden SCOPES
gelten 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 der Anwendung den Best Practices für die 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 eine 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.
Führen Sie die folgenden Schritte aus, um den Zugriff auf die Travel Partner API zu aktivieren:
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 dann 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 dieser 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.
Die Travel Partner API umfasst Folgendes:
"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-Unterkunftspartner können OAuth2.0 verwenden, um sich zu authentifizieren und zu autorisieren, wenn sie Preise auf Google hochladen. Folgen Sie der Einrichtungsanleitung für OAuth 2.0, um eine Autorisierung für die Price Feeds API zu erhalten.
Wichtige Punkte
Beachten Sie die wichtigen Unterschiede in der Autorisierungsanleitung für die Price Feeds API.
Partner müssen in der Google Cloud Console ein neues OAuth2.0-Projekt für Preisfeeds erstellen. Folgen Sie dazu der Anleitung unter OAuth 2.0 einrichten.
Die Aktivierung der Price Feeds API in der Google Cloud Console ist NOT erforderlich und kann ignoriert werden. Sie benötigen nur ein Dienstkonto und einen Schlüssel. Mit demselben Dienstkonto und Schlüssel können Sie dem Projekt „Preisfeeds“ Zugriff auf Ihre Hotel Center-Daten gewähren. Führen Sie die restlichen Schritte aus der OAuth2.0-Einrichtung aus, um die Konfiguration Ihrer API abzuschließen.
OAuth2.0-Zugriffstoken für Preisfeeds abrufen
Im nächsten Schritt rufen Sie mithilfe der Dienstkontoschlüsseldatei ein OAuth2.0-Zugriffstoken mit dem Bereich „Preisupload für Unterkünfte“ ab. Sie können Anfragen an Ihr Preisfeed-Projekt autorisieren, indem Sie der Anleitung unter Vorbereitung auf einen delegierten API-Aufruf folgen. Anschließend können Sie das Zugriffstoken aus den abgerufenen Anmeldedaten extrahieren und im "Authorization"
-HTTP-Header festlegen.
Der Umfang des Uploads 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 für die Authentifizierung und Autorisierung mit der folgenden Änderung hochladen:
- Zugriffstoken im
"Authorization"
-HTTP-Header 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>
OAuth2.0-Einrichtung für die Price Feeds API testen
Sie können Ihre OAuth2.0-Einrichtung testen, indem Sie eine leere Datei oder eine Datei mit echten 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 der API-Umfang eine der folgenden Optionen 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. |