Autoryzacja interfejsu API

W tej dokumentacji znajdziesz szczegółowe instrukcje konfigurowania protokołu OAuth2.0 na aplikacji podczas uzyskiwania dostępu do interfejsów API hoteli, takich jak Travel Partner API i Price Interfejs API plików danych. Zapoznaj się z artykułem Korzystanie z protokołu OAuth 2.0 na potrzeby dostępu do interfejsów API Google. w celu autoryzacji aplikacji.

Konfiguracja protokołu OAuth 2.0

Protokół OAuth 2.0 wymaga od Ciebie identyfikacji się za pomocą konta usługi powiązane z Twoim kontem Google. Konto usługi wysyła dane prywatne w zamian za token dostępu OAuth 2.0. Następnie możesz użyć tego tokena w wywołania interfejsów API hoteli w przypadku danych tylko do odczytu, takich jak ceny, hotel czy dane do raportu diagnostycznego o pliku danych z cenami hoteli.

Tokeny dostępu są ważne przez godzinę (3600 sekund).

Jeśli wcześniej zaimplementowano funkcję ClientLogin, podejście OAuth 2.0 jest podobne, z tymi różnicami:

  • Twoja aplikacja uzyskuje dostęp do interfejsu API za pomocą konta usługi Google.
  • Gdy przekazujesz token dostępu OAuth 2.0 w nagłówku HTTP Authorization, i wywoływanie interfejsów API.

Aby skonfigurować konto pod kątem używania protokołu OAuth 2.0 z dowolnym interfejsem API Hotels, wykonaj te czynności:

  1. Tworzenie nowego projektu w konsoli Google Cloud

  2. Tworzenie konta usługi i jego danych logowania

  3. Przyznawanie kontu usługi dostępu do danych hotelu

Każdy z tych kroków jest opisany w dalszej części tego artykułu.

Krok 1. Utwórz nowy projekt w konsoli Google Cloud

Konsola Google Cloud służy do wyświetlania danych o ruchu i zarządzania nimi, uwierzytelnianie i informacje rozliczeniowe dla interfejsów API Google, które są wykorzystywane w Twoich projektach i ich używanie.

W konsoli Google Cloud projekt to zbiór ustawień, dane logowania i metadane dotyczące aplikacji, nad którą pracujesz, korzysta z interfejsów Google Developer API i zasobów Google Cloud.

Konsola Google Cloud służy też do generowania danych logowania do interfejsu API, Interfejsy API oraz możliwość zarządzania informacjami o zespole i informacjami rozliczeniowymi powiązanymi z Twoim projektem.

Aby utworzyć nowy projekt w konsoli Google Cloud:

  1. Zaloguj się na swoje konto Gmail lub Google.

  2. Otwórz konsolę Google Cloud. Jeśli jest to Twój pierwszy projekt, w widoku głównym zobaczysz opcję UTWÓRZ PROJEKT. przycisk:

    fig1

  3. Kliknij przycisk UTWÓRZ PROJEKT. W konsoli Google Cloud wyświetli się Okno Nowy projekt:

    fig2

    Wpisz przyjazną nazwę nowego projektu w polu Nazwa projektu. pola do wprowadzania danych. Poniżej tego pola konsola Google Cloud wygeneruje projekt. Identyfikator zapewniający unikalny identyfikator we wszystkich projektach. Przykład: jeśli wpiszesz „Mój nowy projekt”, konsola Google Cloud przypisze identyfikator taki jak my-new-project-266022

  4. Aby utworzyć nowy projekt, kliknij przycisk Utwórz.

  5. W menu nawigacji kliknij Interfejsy API i usługi > Panel.

    fig3

    Poniższy obraz przedstawia menu nawigacyjne w lewym górnym rogu w konsoli Google Cloud. Wyświetli się widok Panel dotyczący projekt:

    fig4

Więcej informacji znajdziesz w artykule Tworzenie projektów i zarządzanie nimi.

Krok 2. Utwórz konto usługi i wygeneruj jego dane logowania

Konta usługi są używane w ramach interakcji między serwerami, na przykład aplikacji internetowej i danych hoteli.

Aby utworzyć i skonfigurować konto usługi:

  1. W widoku głównym Konsoli interfejsów API Google kliknij Dane logowania w nawigacji po lewej stronie. W konsoli Google Cloud wyświetli się Dane logowania. widok.

    W widoku Dane logowania wyświetlane są identyfikatory klientów i dane logowania do w projektach AI. Aplikacja używa identyfikatora klienta, gdy wysyła żądanie Token dostępu OAuth 2.0. Nowe projekty nie mają klientów ani danych logowania .

  2. Kliknij link Dane logowania w interfejsach API i usługach.

  3. Kliknij przycisk Utwórz dane logowania i wybierz Klucz konta usługi. z filtra. Pojawi się widok Utwórz klucz konta usługi.

  4. W filtrze Konto usługi wybierz Nowe konto usługi.

  5. Wpisz nazwę i identyfikator konta usługi.

    Nazwa może być dowolna, ale identyfikator konta musi być niepowtarzalny we wszystkich projektach. Konsola Google Cloud wygeneruje dla Ciebie unikalny identyfikator konta na podstawie podanej przez Ciebie nazwy.

  6. Wybierz typ klucza JSON. Wymagany jest format JSON.

  7. Kliknij przycisk Utwórz. Konsola Google Cloud generuje pary kluczy publicznych do projektu. Klucz prywatny jest zapisywany w domyślnym kluczu lokalizacja, w której przeglądarka zapisuje pobrane treści. Musisz pobrać plik w formacie .JSON.

    Klucza prywatnego używasz w skryptach lub innych aplikacjach, które uzyskują dostęp za pomocą interfejsu API.

    Konsola Google Cloud wyświetla komunikat „Utworzono konto usługi” kiedy to zakończy generowanie kluczy.

  8. Kliknij przycisk OK, rozumiem. Konsola Google Cloud spowoduje powrót do Widok Dane logowania. Aby potwierdzić szczegóły Twojego konta usługi oraz aby wyświetlić konto usługi powiązane z projektem, kliknij Zarządzaj kont usługi w tym widoku.

    Z kontem usługi są teraz powiązane te dane logowania:

    • Identyfikator klienta: unikalny identyfikator wykorzystywany przez aplikację, gdy żądania tokena dostępu OAuth 2.0.
    • Adres e-mail: wygenerowany adres e-mail konta usługi w formacie „nazwa_konta@nazwa_projektu.google.com.iam.gserviceaccount.com”.
    • Odciski cyfrowe certyfikatu: identyfikator klucza prywatnego, który został przez Ciebie użyty pobrano.
.

Aby dowiedzieć się więcej, przeczytaj artykuł Używanie protokołu OAuth 2.0 w aplikacjach między serwerami.

Krok 3. Przyznaj kontu usługi dostęp do danych Hotel Center

Ostatnim krokiem jest przyznanie nowemu kontu usługi dostępu do Twojego Hotel Center Konto usługi jest identyfikowane przez wygenerowany adres e-mail, który utworzony w poprzednim kroku. Przyznasz dostęp do tego konta, używając ustawienia udostępniania Hotel Center.

Jeśli nie masz odpowiednich uprawnień, aby dodać użytkowników do konta, skontaktuj się z Zespół ds. hoteli w Google za pomocą formularza kontaktowego i prośby o ustalenie prawa własności do: swoje konto. Możesz poprosić o przyznanie jednego lub kilku e-maili do właściciela. Więcej informacji o dostępie do Hotel Center znajdziesz w artykule Łączenie Hotel Center i Google Ads.

Aby przyznać kontu usługi dostęp do danych z Hotel Center:

  1. W nowym oknie przeglądarki otwórz Hotel Center. fig7

  2. Na banerze Hotel Center by Google kliknij ikonę dodawania użytkownika, aby otworzyć okno udostępniania.

    fig8

  3. W polu Dodaj więcej osób wpisz adres e-mail usługi. konto, które chcesz dodać do Hotel Center.

  4. Pozostaw zaznaczoną opcję Powiadom innych.

  5. W filtrze kliknij Zarządzaj.

  6. Kliknij przycisk Zaproś.

  7. Po dodaniu użytkowników do Hotel Center konto usługi powinno zostać włączone do korzystania z interfejsu API w ciągu około 24 godzin.

Gdy Google powiadomi Cię, że dostęp przez interfejs API jest włączony dla Twojej usługi możesz zacząć korzystać z interfejsu API z protokołem OAuth 2.0.

Jak korzystać z protokołu OAuth 2.0

Aby uzyskać dostęp do interfejsu API, aplikacja musi się zidentyfikować w Google za pomocą adresu e-mail wygenerowanego przez konto usługi i klucza prywatnego. Mechanizm uwierzytelniania Google zamienia ten klucz na token dostępu OAuth 2.0, który przekazujesz w nagłówku Authorization w wywołaniach interfejsu API aplikacji.

Więcej informacji znajdziesz w artykule Przygotowanie do delegowanego wywołania interfejsu API.

Zakresy

Oto SCOPES for Hotels API:

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

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

Interfejs API plików danych o cenach: "https://www.googleapis.com/auth/travel-partner-price-upload"

Podczas tworzenia danych logowania należy podać konto usługi. Więcej informacji: Utwórz konto usługi i wygeneruj jego dane logowania.

Tworząc aplikację, postępuj zgodnie ze sprawdzonymi metodami, uwierzytelniać aplikację za pomocą kluczy interfejsu API. Więcej informacji

Przykład

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)

Interfejs Travel Partner API

Interfejs Travel Partner API pozwala partnerom hotelowym pobierać dane z Hotel Center. i zmieniać dane Hotel Center w celu zarządzania dużymi lub złożonymi kontami.

Postępuj zgodnie z instrukcjami konfiguracji OAUTH 2.0, aby uzyskać autoryzację interfejsu Travel Partner API.

Podczas tworzenia nowego projektu do interfejsu Travel Partners API musisz włączyć dostęp w nowym projekcie w konsoli Google Cloud.

Aby włączyć dostęp do interfejsu Travel Partners API, wykonaj te czynności:

  1. Otwórz widok panelu projektu.

  2. Kliknij Włącz interfejsy API i usługi. Wyświetli się powitalna biblioteka interfejsów API stronę.

  3. W polu wyszukiwania zacznij wpisywać „Travel Partner API”, a konsola wyświetli listę interfejsów API pasujących do tego wyszukiwanego ciągu znaków.

  4. W tabeli kliknij odpowiedni interfejs API. Konsola Google Cloud wyświetla opis tego interfejsu API.

  5. Kliknij przycisk Włącz API, aby włączyć ten interfejs API w swoim projekcie.

Więcej informacji znajdziesz w artykule Włączanie i wyłączanie usług.

Interfejs Travel Partner API został włączony w nowym projekcie Twojego konta Google.

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

Punkt końcowy interfejsu Travel Partner API: "https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"

Interfejs Travel Partner Prices API

Interfejs Travel Partner Prices API umożliwia partnerom hotelowym wysyłanie cen miejsc zakwaterowania do Google. Ta opcja jest też nazywana cennikiem długości pobytu (LoS).

Postępuj zgodnie z instrukcjami konfiguracji OAUTH 2.0, aby uzyskać autoryzację za pomocą interfejsu Travel Partner Prices API.

Podczas tworzenia nowego projektu pod kątem interfejsu Travel Partners Prices API musisz wykonać te czynności: włącz dostęp do nowego projektu konsoli Google Cloud, który jest podobny do instrukcji podanych w interfejsie Travel Partner API.

Zapoznaj się z instrukcjami podanymi w interfejsie Travel Partner API i zastąp wszystkie wystąpienia „Travel Partner API” za pomocą interfejsu „Travel Partner Prices API” aby włączyć do swojego projektu.

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

Ścieżka przesyłania interfejsu Travel Partner Prices API: "/travel/lodging/uploads/accounts/<account_id>/property_data"

Interfejs API plików danych o cenach

Interfejs Price Feeds API umożliwia partnerom hotelowym dostarczanie dostosowanych danych o cenach w każdym hotelu. Partnerzy oferujący zakwaterowanie mogą używać OAuth 2.0 do uwierzytelniania i autoryzowania się podczas przesyłania cen do Google. Stosuj OAUTH 2.0 instrukcje konfiguracji dotyczące uzyskiwania autoryzacji dla interfejsu Price Feeds API.

Kwestie, o których należy pamiętać

Zwróć uwagę na istotne różnice w instrukcjach autoryzacji dotyczących plików danych z cenami API.

  1. Partnerzy powinni utworzyć nowy projekt protokołu OAuth2.0 dla plików danych z cenami. w konsoli Google Cloud przy użyciu instrukcji opisanych w sekcji Konfiguracja OAuth 2.0.

  2. Włączenie interfejsu Price Feeds API w konsoli Google Cloud NIE jest wymagane. można zignorować. Wystarczy jedno konto usługi i jeden klucz usługi, aby przyznać projektowi Plików danych o cenach dostęp do danych z Hotel Center. Wykonaj pozostałe czynności wymienione w konfiguracji OAuth2.0, aby dokończ konfigurowanie interfejsu API.

Uzyskaj token dostępu OAuth2.0 dla plików danych z cenami

Następny krok to przesłanie tokena dostępu OAuth2.0 wraz z przesyłaniem informacji o cenie noclegu zakresu za pomocą pliku klucza konta usługi. Aby autoryzować żądania do projektu Pliki danych o cenach, wykonaj instrukcje podane w sekcji Przygotowanie do wykonania delegowanego wywołania interfejsu API, a następnie wyodrębnij token dostępu z uzyskanych danych logowania i ustaw go w nagłówku HTTP "Authorization".

Zakres przesyłania cen zakwaterowania: "https://www.googleapis.com/auth/travel-partner-price-upload"

Prześlij ceny

Po uzyskaniu tokena dostępu partnerzy mogą przesłać plik danych z cenami podobny do używając statycznego adresu IP do uwierzytelniania i autoryzacji z następującymi modyfikacja:

  • Ustaw token dostępu w nagłówku 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>

Testowanie konfiguracji protokołu OAuth2.0 pod kątem interfejsu Price Feeds API

Możesz przetestować konfigurację OAuth2.0, przesyłając pusty plik lub z rzeczywistymi cenami do dowolnej ścieżki przesyłania. Aby sprawdzić odpowiedź HTTP, użyj tabeli stanu.

Stan odpowiedzi HTTP Wiadomość
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

Rozwiązywanie problemów

Masz problemy? Szybkie sprawdzenie tych elementów może rozwiązać i rozpoznają problem.

  1. Czy Twój projekt został utworzony w konsoli Google Cloud?
  2. Czy usługa została włączona w projekcie?
  3. Czy pobrałeś plik .JSON – klucz prywatny po kliknięciu? Utworzyć identyfikator klienta i wybrać Konto usługi?
  4. Czy masz adres e-mail powiązany z identyfikatorem klienta konta usługi i formularzem: nnnnnnn@app_name.google.com.iam.gserviceaccount.com?
  5. Czy konto Hotel Ads Center zostało udostępnione kontu usługi przez kliknięcie przycisk Udostępnij to konto?
  6. Czy adres e-mail konta usługi i identyfikator partnera zostały wysłane na adres technicznym menedżerem konta (TAM)?
  7. Czy wywołania interfejsu API przekazują niedawno uzyskany token w Authorization nagłówek?
  8. Czy Twój token ma więcej niż godzinę?

W poniższej tabeli znajdziesz listę kilku częstych błędów i możliwych sposobów ich rozwiązania:

Błąd Opis
Invalid credentials Może to oznaczać kilka rzeczy. Jeśli pojawi się ten błąd, Sprawdź, czy:
  • Podany nagłówek Authorization zawiera prawidłową wartość token okaziciela.
  • Token okaziciela ma mniej niż godzinę. Token jest dobry na 1 godzinę.
  • Podano prawidłową nazwę partnera (z parametrem ciągu zapytania partner ). Wartość to Twój unikalny partner Identyfikator, a nie nazwę partnera widoczną w Hotel Ads Center. Jeśli nie chcesz znasz swój identyfikator partnera, skontaktuj się z technicznym menedżerem konta (TAM).
Not found Punkt końcowy najprawdopodobniej jest uszkodzony. Sprawdź, czy przesyłasz żądanie GET i czy adres URL żądania jest prawidłowy (czy jest zgodny ze składnią interfejsu API, do którego próbujesz uzyskać dostęp).
Invalid string value Co najmniej jedna część punktu końcowego zawiera nieprawidłową składnię. Przykład: ale część ścieżki została zapisana z błędem. Sprawdź, czy użyto prawidłowego znaków podkreślenia, wielkich liter i słów na całej ścieżce.
Unsupported output format Ten błąd występuje najczęściej podczas korzystania z interfejsu Reports API. Musisz podaj "alt=csv" w adresie URL Twojej GET użytkownika. Interfejs Reports API nie obsługuje formatu JSON.
AccessTokenRefreshError/Invalid grant Podczas uruchamiania aplikacji błąd ten może być spowodowany przez :
  • Adres e-mail konta usługi jest nieprawidłowy. Sprawdź e-maila na koncie w Google Cloud Console i sprawdź, czy ma uprawnienia dostępu do Twojego interfejsu API.
  • Ten adres e-mail nie ma dostępu do interfejsu API. Sprawdź, czy e-mail adres ma dostęp do danych o Twoich hotelach, które są udostępniane w Hotel Center.
  • Plik klucza jest nieprawidłowy w przypadku konta usługi. Używaj konsoli Google Cloud, aby pobrać nowy plik .JSON i upewnij się, że aplikacja wskazuje właściwy.
HotelAdsAPIConnection object has no attribute credentials Podczas uruchamiania aplikacji ścieżka do pliku .JSON to niepoprawnie.
Invalid scope Podczas uruchamiania aplikacji zakres interfejsu API musi być jeden z tych:
  • &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 Identyfikator konta, którego używasz, nie jest autoryzowany. aby uzyskać dostęp. Jeśli jesteś właścicielem subkonta, możesz nie mieć dostępu do identyfikator konta nadrzędnego lub konta głównego.