API-Autorisierung

In dieser Dokumentation wird Schritt für Schritt erklärt, wie Sie OAuth2.0 in Ihrem beim Zugriff auf Hotel-APIs wie Travel Partner API und 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 du dich mit einem Dienstkonto identifizierst die mit Ihrem Google-Konto verknüpft sind. Das Dienstkonto sendet Ihre private erhalten Sie ein OAuth 2.0-Zugriffstoken. Sie können dieses Token dann Aufrufe der Hotel-APIs für schreibgeschützte Daten wie Preise, Hotels und Diagnoseberichtsdaten zu Ihrem Hotelpreisfeed.

Zugriffstokens sind für eine Stunde (3.600 Sekunden) gültig.

Der OAuth 2.0-Ansatz ist ähnlich wie beim bisherigen ClientLogin. mit den folgenden Unterschieden:

  • Ihre Anwendung greift über ein Google-Dienstkonto auf die API zu.
  • Sie übergeben ein OAuth 2.0-Zugriffstoken im HTTP-Header Authorization, wenn APIs aufrufen.

Führen Sie die folgenden Schritte aus, um Ihr Konto für die Verwendung von OAuth 2.0 mit einer Hotel-API einzurichten: Schritte:

  1. Neues Projekt in der Google Cloud Console erstellen

  2. Dienstkonto und Anmeldedaten erstellen

  3. Geben Sie dem Dienstkonto Zugriff auf Ihre Hoteldaten.

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 über die Anwendung, an der du gerade arbeitest, verwendet Google Developer APIs und Google Cloud-Ressourcen.

Die Google Cloud Console wird auch zum Generieren von API-Anmeldedaten, der Aktivierung von APIs und Verwaltung von Team- und Zahlungsinformationen im Zusammenhang mit Ihrem Projekt.

So erstellen Sie ein neues Google Cloud Console-Projekt:

  1. Melden Sie sich in Ihrem Gmail- oder Google-Konto an.

  2. Öffnen Sie die Google Cloud Console. Wenn dies Ihr erstes Projekt ist, wird in der Hauptansicht CREATE PROJECT (Projekt erstellen) angezeigt. Schaltfläche:

    fig1

  3. Klicken Sie auf die Schaltfläche PROJEKT ERSTELLEN. In der Google Cloud Console werden die Dialogfeld Neues Projekt:

    fig2

    Geben Sie im Feld Projektname einen Namen für das neue Projekt ein. Eingabefeld. Unter dem Feld generiert die Google Cloud Console eine Projekt-ID für Sie. Dabei ist die ID für alle Projekte eindeutig. Beispiel: Wenn Sie „Mein neues Projekt“ eingeben, weist die Google Cloud Console eine ID wie my-new-project-266022

  4. Klicken Sie auf die Schaltfläche Erstellen, um Ihr neues Projekt zu erstellen.

  5. Wählen Sie im Navigationsmenü APIs & Dienste > Dashboard aus.

    fig3

    Die folgende Abbildung zeigt das Navigationsmenü oben links im in der Google Cloud Console. Daraufhin wird die Dashboard-Ansicht für Ihr Projekt:

    fig4

Weitere Informationen finden Sie unter Projekte erstellen und verwalten.

Schritt 2: Dienstkonto mit Anmeldedaten erstellen

Dienstkonten werden für Interaktionen zwischen Servern verwendet, z. B. zwischen eine Webanwendung und Ihre Hoteldaten.

So erstellen und konfigurieren Sie ein Dienstkonto:

  1. Klicken Sie in der Hauptansicht der Google API Console auf Anmeldedaten im im linken Navigationsbereich. In der Google Cloud Console werden die Anmeldedaten angezeigt. angezeigt wird.

    In der Ansicht Anmeldedaten werden die Client-IDs und Anmeldedaten für Ihre Projekt arbeiten. Ihre Anwendung verwendet die Client-ID bei der Anforderung eines OAuth 2.0-Zugriffstoken. Neue Projekte haben keine Clients oder Anmeldedaten noch nicht.

  2. Klicken Sie auf den Link Anmeldedaten in APIs und Diensten.

  3. Klicken Sie auf Anmeldedaten erstellen und wählen Sie Dienstkontoschlüssel aus. aus dem Filter. Die Ansicht Dienstkontoschlüssel erstellen wird angezeigt.

  4. Wählen Sie im Filter Dienstkonto die Option Neues Dienstkonto aus.

  5. Geben Sie einen Dienstkontonamen und eine Dienstkonto-ID ein.

    Sie können einen beliebigen Namen eingeben, die Konto-ID muss jedoch eindeutig sein in allen Projekten. Die Google Cloud Console generiert eine eindeutige Konto-ID für Sie basierend auf dem von Ihnen eingegebenen Namen.

  6. Wählen Sie als Schlüsseltyp JSON aus. JSON ist erforderlich.

  7. Klicken Sie auf Erstellen. Die Google Cloud Console generiert eine private oder öffentlichen Schlüssels für Ihr Projekt. Der private Schlüssel wird an dem Standardspeicherort Ihres Browsers für Downloads gespeichert. Laden Sie die Datei im .JSON-Format herunter.

    Sie verwenden den privaten Schlüssel in Ihren Skripts oder anderen Anwendungen, die auf Ihre API.

    In der Google Cloud Console wird „Dienstkonto erstellt“ angezeigt angezeigt, wenn es beendet das Generieren der Schlüssel.

  8. Klicken Sie auf die Schaltfläche OK. Die Google Cloud Console kehrt zur Ansicht Anmeldedaten Um die Details zu Ihrem Dienstkonto und Klicken Sie auf Verwalten Dienstkonten in dieser Ansicht.

    Dem Dienstkonto sind jetzt die folgenden Anmeldedaten zugeordnet:

    • Client-ID: Eine eindeutige Kennung, die Ihre Anwendung verwendet, wenn: ein OAuth 2.0-Zugriffstoken anfordert.
    • E-Mail-Adresse:Eine für das Dienstkonto in das Formular account_name@account_name.google.com.iam.gserviceaccount.com
    • Zertifikat-Fingerabdrücke:Die ID des privaten Schlüssels, den Sie heruntergeladen.

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 Hotel Center Das Dienstkonto wird durch die generierte E-Mail-Adresse identifiziert, die die Sie im vorherigen Schritt erstellt haben. Sie gewähren Zugriff auf dieses Konto mithilfe von Freigabeeinstellungen im Hotel Center

Wenn Sie nicht über die erforderlichen Zugriffsrechte zum Hinzufügen von Nutzern zum Konto verfügen, wenden Sie sich an den Das Google Hotels-Team über das Kontaktformular, um die Inhaberschaft für in Ihrem Konto. Sie können beantragen, dass eine oder mehrere E-Mail-Adressen an einen Inhaber gesendet werden. Weitere Informationen zum Zugriff auf das Hotel Center finden Sie unter Hotel Center und Google Ads verknüpfen.

So gewähren Sie einem Dienstkonto Zugriff auf Ihre Hotel Center-Daten:

  1. Öffnen Sie das Hotel Center in einem neuen Browserfenster. fig7

  2. Klicken Sie im Banner Hotel Center by Google auf das Symbol zum Hinzufügen von Nutzern, um sie zu öffnen. Freigabedialogfeld öffnen.

    fig8

  3. Geben Sie im Feld Weitere Personen hinzufügen die E-Mail-Adresse des Dienstes ein. Konto, das Sie Ihrem Hotel Center hinzufügen möchten.

  4. Lassen Sie die Option Personen benachrichtigen aktiviert.

  5. Wähle im Filter Verwalten aus.

  6. Klicke auf Einladen.

  7. Nachdem Sie Ihrem Hotel Center Nutzer hinzugefügt haben, sollte Ihr Dienstkonto innerhalb von etwa 24 Stunden für den API-Zugriff aktiviert werden.

Nachdem Google Sie darüber informiert hat, dass der API-Zugriff für Ihren Dienst aktiviert ist 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. Google Authentifizierungsmechanismus diesen Schlüssel gegen ein OAuth 2.0-Zugriffstoken übergeben Sie den Authorization-Header in den API-Aufrufen Ihrer App.

Weitere Informationen finden Sie unter Vorbereitung eines delegierten API-Aufrufs.

Ebenen

Im Folgenden finden Sie die SCOPES für die Hotels API:

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

Travel Partner Prices API: "https://travelpartnerprices.googleapis.com"

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 Erstellen Sie ein Dienstkonto und generieren Sie die zugehörigen Anmeldedaten.

Befolgen Sie bei der Entwicklung Ihrer Anwendung die Best Practices, um authentifizieren Sie Ihre Anwendung mithilfe von 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://travelpartnerprices.googleapis.com','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 Beherbergungspartner Hotel Center abrufen Informationen und Änderung von Hotel Center-Daten, 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 aktivieren. in Ihr neues Google Cloud Console-Projekt ein.

So aktivieren Sie den Zugriff auf die Travel Partner API:

  1. Rufen Sie die Dashboard-Ansicht Ihres Projekts auf.

  2. Klicken Sie auf APIs und Dienste aktivieren. Daraufhin wird die Willkommensnachricht der API-Bibliothek angezeigt. Seite.

  3. Geben Sie im Suchfeld die ersten Buchstaben von „Travel Partner API“ ein und sehen Sie sich dann die Konsole an. zeigt eine Liste der APIs an, die Ihrer Eingabe entsprechen.

  4. Klicken Sie auf die API, die in der Tabelle übereinstimmt. In der Google Cloud Console wird eine eine Beschreibung dieser API.

  5. 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 Geltungsbereich der Travel Partner API ist: "https://www.googleapis.com/auth/travelpartner"

Der Endpunkt für die Travel Partner API ist: "https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"

Travel Partner Prices API

Mit der Travel Partner Prices API können Beherbergungspartner Hotelpreise an folgende Adresse senden: Google. Es wird auch als Preise für die Aufenthaltsdauer bezeichnet.

Folgen Sie der Anleitung unter OAUTH 2.0 einrichten, um eine Autorisierung für Ihre Travel Partner Prices API.

Wenn Sie ein neues Projekt für die Travel Partner Prices API erstellen, müssen Sie den Zugriff auf Ihr neues Google Cloud Console-Projekt zu ermöglichen, in der Travel Partner API bereitgestellt.

Folgen Sie den Schritten in der Travel Partner API und ersetzen Sie alle Instanzen von "Travel Partner API" mit der Travel Partner Prices API zum Aktivieren für Ihr Projekt.

Der Geltungsbereich der Travel Partner Prices API ist: "https://travelpartnerprices.googleapis.com"

Der Uploadpfad für die Travel Partner Prices API lautet: "/travel/lodging/uploads/accounts/<account_id>/property_data"

Price Feeds API

Mit der Price Feeds API können Beherbergungspartner benutzerdefinierte Preisdaten für in jedem Hotel. Google-Hotelpartner können OAuth 2.0 zur Authentifizierung und sich beim Hochladen von Preisen auf Google autorisieren. Folgen Sie der Anleitung unter OAUTH 2.0. einrichten, um eine Autorisierung für die Price Feeds API einzuholen.

Wichtige Punkte

Beachten Sie die wichtigen Unterschiede in der Autorisierungsanleitung für Preisfeeds. der API erstellen.

  1. Partner sollten ein neues OAuth2.0-Projekt für Preisfeeds erstellen. in der Google Cloud Console anhand derselben Anleitung wie unter OAuth 2.0-Einrichtung beschrieben.

  2. Das Aktivieren der Price Feeds API in der Google Cloud Console ist NICHT erforderlich und können ignoriert werden. Sie benötigen nur ein Dienstkonto und und dann denselben Schlüssel Dienstkonto und Schlüssel, um Zugriff auf das Projekt „Preisfeeds“ auf Ihr Hotel zu gewähren Daten zentrieren. Führen Sie die restlichen Schritte aus, die in der OAuth2.0-Einrichtung beschrieben sind, um die Konfiguration Ihrer API abzuschließen.

OAuth 2.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 autorisieren, die an Ihre Preisfeeds erstellen, indem Sie der Anleitung unter Einen delegierten API-Aufruf vorbereiten Extrahieren Sie dann das Zugriffstoken aus den abgerufenen Anmeldedaten und legen Sie es im den "Authorization"-HTTP-Header.

Für den Upload von Unterkunftspreisen gilt Folgendes: "https://www.googleapis.com/auth/travel-partner-price-upload"

Preise hochladen

Nachdem sie das Zugriffstoken erhalten haben, können Partner ihren Preisfeed so hochladen: Verwenden einer statischen IP-Adresse zur Authentifizierung und Autorisierung mit folgendem Befehl: Ä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>

OAuth2.0-Einrichtung für die Price Feeds API testen

Sie können Ihre OAuth2.0-Einrichtung testen, indem Sie eine leere Datei oder mit echten Preisen hochladen Daten zu einem beliebigen Uploadpfad hinzufügen. Überprüfen Sie Ihre HTTP-Antwort mithilfe der Tabelle. Status.

HTTP-Antwortstatus Meldung
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? Eine schnelle Überprüfung der folgenden Punkte könnte das Problem möglicherweise lösen das Problem zu lösen.

  1. Haben Sie ein Projekt in der Google Cloud Console erstellt?
  2. Haben Sie den Dienst in Ihrem Projekt aktiviert?
  3. Haben Sie eine .JSON-Datei heruntergeladen? Das ist ein privater Schlüssel, nachdem Sie darauf geklickt haben. Client-ID erstellen und Dienstkonto auswählen?
  4. Haben Sie die Client-ID-E-Mail-Adresse des Dienstkontos eines Formulars erhalten? nnnnnnn@app_name.google.com.iam.gserviceaccount.com?
  5. Haben Sie Ihr Hotel Ads Center-Konto mit dem Dienstkonto geteilt, indem Sie auf die Schaltfläche Dieses Konto teilen geklickt haben?
  6. Haben Sie die E-Mail-Adresse des Dienstkontos und Ihre Partner-ID an Technical Account Manager (TAM)?
  7. Wird bei Ihren API-Aufrufen ein kürzlich erhaltenes Token im Feld Authorization-Header?
  8. Ist Ihr Token älter als eine Stunde?

In der folgenden Tabelle sind einige häufige Fehler und mögliche Lösungen aufgeführt:

Fehler Beschreibung
Invalid credentials Dies kann verschiedene Gründe haben. Wenn dieser Fehler auftritt, prüfen Sie Folgendes:
  • Sie haben einen Authorization-Header mit einem gültigen Inhabertokens.
  • Das Inhabertoken ist weniger als eine Stunde alt. Ein Token ist nur gut für eine Stunde.
  • Sie haben den richtigen Partnernamen mit dem Abfragestringparameter partner angegeben. Der Wert ist Ihre eindeutige Partner-ID und nicht Ihr Partnername, der im Hotel Ads Center angezeigt wird. Wenn Sie keine Ihre Partner-ID kennen, wenden Sie sich an Ihren Technical Account Manager (TAM).
Not found Der Endpunkt ist höchstwahrscheinlich fehlerhaft. 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 Mindestens ein Teil des Endpunkts enthält eine ungültige Syntax. Beispiel: haben Sie möglicherweise einen Teil des Pfads falsch geschrieben. Prüfen Sie, ob Sie den richtigen Unterstriche, Groß- und Kleinschreibung und Formulierungen im gesamten Pfad verwenden.
Unsupported output format Dieser Fehler tritt am häufigsten bei Verwendung der Reports API auf. Du musst Geben Sie "alt=csv" in der URL Ihrer GET an. JSON wird von der Reports API nicht unterstützt.
AccessTokenRefreshError/Invalid grant Beim Ausführen Ihrer Anwendung kann dieser Fehler folgende Ursachen haben: Folgendes:
  • Die E-Mail-Adresse Ihres Dienstkontos ist falsch. Prüfen Sie in der Google Cloud Console, ob das E-Mail-Konto für den Zugriff auf Ihre API berechtigt ist.
  • Die E-Mail-Adresse hat keinen API-Zugriff. Prüfen Sie, ob die E-Mail Adresse autorisiert ist, auf Ihre freigegebenen Hoteldaten zuzugreifen, über das Hotel Center.
  • Die Schlüsseldatei ist nicht die richtige für das Dienstkonto. Verwenden Sie Über die Google Cloud Console, um eine neue .JSON herunterzuladen und vergewissern Sie sich, dass Ihre App auf das richtige Zertifikat verweist.
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-Bereich einer der folgenden Bereiche sein:
  • &quot;https://www.googleapis.com/auth/travelpartner&quot;
  • &quot;https://travelpartnerprices.googleapis.com&quot;
  • &quot;https://www.googleapis.com/auth/travel-partner-price-upload&quot;
Forbidden Die verwendete Konto-ID hat keine Autorisierung um darauf zuzugreifen. Wenn Sie Inhaber eines Unterkontos sind, können Sie möglicherweise nicht auf die ID des übergeordneten oder Ursprungskontos zugreifen.