Autoryzacja interfejsu API

Ta dokumentacja zawiera szczegółowe instrukcje konfigurowania protokołu OAuth 2.0 w aplikacji, aby uzyskać dostęp do interfejsów API hoteli, takich jak Travel Partner API i interfejs API plików danych o cenach. Aby autoryzować aplikację, zapoznaj się z artykułem Używanie protokołu OAuth 2.0 na potrzeby dostępu do interfejsów API Google.

Konfiguracja protokołu OAuth 2.0

OAuth 2.0 wymaga, abyś się zalogował(-a) za pomocą konta usługi powiązanego z Twoim kontem Google. Konto usługi wysyła klucz prywatny w zamian za token dostępu OAuth 2.0. Następnie możesz używać tego tokena w wywołaniach interfejsów API hoteli w celu uzyskiwania danych tylko do odczytu, takich jak ceny, informacje o hotelu i dane diagnostyczne dotyczące pliku danych o cenach 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:

  • Aplikacja uzyskuje dostęp do interfejsu API za pomocą konta usługi Google.
  • Podczas wywoływania interfejsów API przekazujesz token dostępu OAuth 2.0 w nagłówku HTTP Authorization.

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. Utwórz konto usługi wraz z danymi logowania

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

Każdy z tych kroków jest opisany w dalszych sekcjach.

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

Konsolę Google Cloud można używać do zarządzania danymi ruchu, uwierzytelniania i informacjami rozliczeniowymi w przypadku interfejsów API Google używanych przez Twoje projekty.

W konsoli Google Cloud projekt to zbiór ustawień, danych logowania i metadanych dotyczących aplikacji, nad którą pracujesz, a która korzysta z interfejsów API Google Developer i zasobów Google Cloud.

Konsola Google Cloud służy też do generowania danych logowania do interfejsów API, aktywowania interfejsów API oraz zarządzania informacjami o zespole i płatnościach powiązanymi z projektem.

Aby utworzyć nowy projekt w konsoli Google Cloud:

  1. Zaloguj się na konto Gmail lub Google.

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

    fig1

  3. Kliknij przycisk UTWÓRZ PROJEKT. Konsola Google Cloud wyświetla okno Nowy projekt:

    fig2

    W polu tekstowym Nazwa projektu wpisz przyjazną nazwę nowego projektu. Poniżej tego pola konsola Google Cloud wygeneruje identyfikator projektu, który będzie unikalny dla wszystkich projektów. Jeśli np. wpiszesz „Mój nowy projekt”, konsola Google Cloud przypisze identyfikator, np. 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

    Na poniższym obrazie widać menu nawigacyjne w lewym górnym rogu konsoli Google Cloud. Wyświetli się widok Panelu projektu:

    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 do interakcji między serwerami, np. między aplikacją internetową a danymi hotelu.

Aby utworzyć i skonfigurować konto usługi:

  1. W widoku głównym konsoli interfejsu API Google w menu nawigacyjnym po lewej stronie kliknij Dane logowania. Konsola Google Cloud wyświetla widok Dane logowania.

    Widok Dane uwierzytelniające zawiera identyfikatory klienta i dane uwierzytelniające Twojego projektu. Aplikacja używa identyfikatora klienta, aby poprosić o token dostępu OAuth 2.0. Nowe projekty nie mają jeszcze żadnych 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. Wyświetli się widok Tworzenie klucza 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 nazwy.

  6. Jako typ klucza wybierz JSON. Wymagany jest plik JSON.

  7. Kliknij przycisk Utwórz. Konsola Google Cloud wygeneruje parę kluczy prywatnych lub publicznych dla Twojego projektu. Klucz prywatny jest zapisywany w domyślnej lokalizacji, w której przeglądarka przechowuje pliki pobrane z Internetu. Musisz pobrać plik w formacie .JSON.

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

    Gdy konsola Google Cloud zakończy generowanie kluczy, wyświetli komunikat „Utworzono konto usługi”.

  8. Kliknij przycisk OK, zrozumiałem. Konsola Google Cloud wraca do widoku Dane logowania. Aby sprawdzić szczegóły konta usługi i zobaczyć konto usługi powiązane z Twoim projektem, w tym widoku kliknij Zarządzaj kontami usługi.

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

    • Identyfikator klienta: unikalny identyfikator, którego aplikacja używa do żądania tokena dostępu OAuth 2.0.
    • Adres e-mail: wygenerowany adres e-mail konta usługi w formie „nazwa_konta@nazwa_projektu.google.com.iam.gserviceaccount.com”.
    • Odcisk palca certyfikatu: identyfikator pobranego klucza prywatnego.

Więcej informacji znajdziesz w artykule Używanie protokołu OAuth 2.0 w aplikacjach międzyserwerowych.

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

Ostatnim krokiem jest przyznanie nowemu kontu usługi dostępu do Hotel Center. Konto usługi jest identyfikowane przez wygenerowany adres e-mail utworzony w poprzednim kroku. Dostęp do tego konta możesz przyznać za pomocą ustawień udostępniania w Hotel Center.

Jeśli nie masz odpowiedniego dostępu do dodawania użytkowników do konta, skontaktuj się z zespołem Google Hotels, korzystając z formularza Kontakt z zespołem, i poproś o ustawienie własności konta. Możesz poprosić o wysłanie co najmniej 1 e-maila do właściciela. Więcej informacji o dostępie do Hotel Center znajdziesz w artykule Łączenie konta Hotel Center z kontem Google Ads.

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

  1. W nowym oknie przeglądarki otwórz Centrum hotelowe. fig7

  2. Na banerze Centrum hoteli Google kliknij ikonę dodawania użytkownika, aby otworzyć okno udostępniania.

    fig8

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

  4. Pozostaw zaznaczoną opcję Powiadomienia.

  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 do interfejsu API jest włączony dla Twojego konta usługi, możesz zacząć korzystać z interfejsu API za pomocą protokołu 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 dla konta 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.

Zapoznaj się z artykułem Przygotowanie do wykonania delegowanego wywołania interfejsu API.

Zakresy

Oto SCOPES interfejsu API reklam hoteli:

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

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

Podczas tworzenia danych logowania należy podać konto usługi. Zobacz artykuł Tworzenie konta usługi i generowanie jego danych logowania.

Podczas tworzenia aplikacji postępuj zgodnie ze sprawdzonymi metodami uwierzytelniania aplikacji 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://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

Interfejs Travel Partner API umożliwia partnerom ds. zakwaterowania pobieranie informacji z Hotel Center i zmianę danych w Hotel Center w celu zarządzania dużymi lub złożonymi kontami.

Aby uzyskać autoryzację interfejsu Travel Partner API, postępuj zgodnie z instrukcjami konfigurowania OAuth 2.0.

Podczas tworzenia nowego projektu dla interfejsu Travel Partners API musisz zezwolić na dostęp do nowego projektu w Konsoli Google Cloud.

Aby włączyć dostęp do interfejsu Travel Partners API:

  1. Otwórz panel projektu.

  2. Kliknij Włącz interfejsy API i usługi. Wyświetli się strona powitalna biblioteki API.

  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 pasujący interfejs API. Konsola Google Cloud wyświetla opis tego interfejsu API.

  5. Kliknij przycisk Włącz interfejs API, aby włączyć ten interfejs API w 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 to: "https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"

.

Interfejs API danych o cenach

Interfejs Price Feeds API umożliwia partnerom oferującym zakwaterowanie udostępnianie dostosowanych danych o cenach każdego hotelu. Partnerzy oferujący zakwaterowanie mogą używać OAuth 2.0 do uwierzytelniania i autoryzowania się podczas przesyłania cen do Google. Aby uzyskać autoryzację interfejsu API danych o cenach, postępuj zgodnie z instrukcjami konfiguracji OAuth 2.0.

Ważne informacje

Zwróć uwagę na ważne różnice w instrukcjach autoryzacji interfejsu API dotyczącego plików danych o cenach.

  1. Partnerzy powinni utworzyć nowy projekt danych cen OAuth 2.0 w konsoli Google Cloud, postępując zgodnie z instrukcjami podanymi w artykule Konfiguracja OAuth 2.0.

  2. Włączanie interfejsu Price Feeds API w konsoli Google Cloud NOT jest wymagane i można je zignorować. Wystarczy jedno konto usługi i jeden klucz konta usługi, aby przyznać projektowi Plików danych o cenach dostęp do danych z Hotel Center. Aby dokończyć konfigurowanie interfejsu API, wykonaj pozostałe czynności opisane w sekcji dotyczącej konfiguracji OAuth2.0.

Pobieranie tokena dostępu OAuth 2.0 do plików danych o cenach

Następnym krokiem jest uzyskanie tokena dostępu OAuth 2.0 z uprawnieniami do przesyłania cen zakwaterowania za pomocą pliku klucza konta usługi. Aby autoryzować żądania do projektu plików danych o cenach, wykonaj instrukcje podane w sekcji Przygotowanie do wykonania delegowanego wywołania interfejsu API, a potem wyodrębnij token dostępu z uzyskanych danych logowania i ustaw go w nagłówku HTTP "Authorization".

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

Przesyłanie cen

Po uzyskaniu tokena dostępu partnerzy mogą przesyłać plik danych o cenach w podobny sposób, używając stałego adresu IP do uwierzytelniania i autoryzacji z tą zmianą:

  • 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 OAuth 2.0 w przypadku interfejsu Price Feeds API

Konfigurację OAuth2.0 możesz przetestować, przesyłając pusty plik lub plik z rzeczywistymi danymi o cenach do dowolnej ścieżki przesyłania. Za pomocą tej tabeli możesz sprawdzić stan odpowiedzi HTTP.

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? Problem może rozwiązać szybkie sprawdzenie tych elementów.

  1. Czy utworzyłeś/utworzyłaś projekt w konsoli Google Cloud?
  2. Czy włączono usługę w projekcie?
  3. Czy po kliknięciu Utwórz identyfikator klienta i wybraniu Konto usługi został pobrany plik .JSON, czyli klucz prywatny?
  4. Czy otrzymasz adres e-mail identyfikatora klienta konta usługi w formie: nnnnnnn@app_name.google.com.iam.gserviceaccount.com?
  5. Czy konto Hotel Ads Center zostało udostępnione kontu usługi po kliknięciu przycisku Udostępnij to konto?
  6. Czy wysłałeś/wysłałaś adres e-mail konta usługi i identyfikator partnera do technicznego menedżera konta?
  7. Czy wywołania interfejsu API przekazują w nagłówku Authorization token uzyskany niedawno?
  8. Czy Twój token ma więcej niż 1 godzinę?

W tabeli poniżej znajdziesz listę wybranych typowych błędów i ich możliwych rozwiązań:

Błąd Opis
Invalid credentials Może to oznaczać kilka rzeczy. Jeśli pojawi się ten błąd, sprawdź, czy:
  • Podano nagłówek Authorization z prawidłowym tokenem tożsamości.
  • Token tożsamości jest krótszy niż godzina. Token jest ważny tylko przez 1 godzinę.
  • podana została prawidłowa nazwa partnera (za pomocą parametru ciągu zapytania partner ); Wartość to Twój unikalny identyfikator partnera, a nie nazwa partnera, która pojawia się w Centrum reklam hoteli. Jeśli nie znasz identyfikatora partnera, skontaktuj się z technicznym menedżerem konta (TAM).
Not found Punkt końcowy jest prawdopodobnie nieprawidłowy. 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 1 część punktu końcowego zawiera nieprawidłową składnię. Może się na przykład okazać, że część ścieżki została zapisana z błędem. Sprawdź, czy w całej ścieżce użyto poprawnych podkreśleń, wielkich liter i słów.
Unsupported output format Ten błąd występuje najczęściej podczas korzystania z interfejsu Reports API. W adresie URL żądania GET musisz podać parametr "alt=csv". Interfejs Reports API nie obsługuje formatu JSON.
AccessTokenRefreshError/Invalid grant Ten błąd może wystąpić podczas uruchamiania aplikacji z jednego z tych powodów:
  • Adres e-mail konta usługi jest nieprawidłowy. Sprawdź konto e-mail w konsoli Google Cloud i upewnij się, że ma ono uprawnienia dostępu do Twojego interfejsu API.
  • Adres e-mail nie ma dostępu do interfejsu API. Sprawdź, czy adres e-mail ma uprawnienia dostępu do danych hoteli udostępnianych w Hotel Center.
  • Plik klucza nie jest odpowiednim plikiem dla konta usługi. Pobierz nowy certyfikat .JSONz konsoli Google Cloud i sprawdź, czy Twoja aplikacja wskazuje prawidłowy certyfikat.
HotelAdsAPIConnection object has no attribute credentials Podczas uruchamiania aplikacji ścieżka do pliku .JSON jest nieprawidłowa.
Invalid scope Podczas uruchamiania aplikacji zakres interfejsu API musi być jeden z tych:
  • "https://www.googleapis.com/auth/travelpartner"
  • "https://www.googleapis.com/auth/travel-partner-price-upload"
Forbidden Używany przez Ciebie identyfikator konta nie ma uprawnień dostępu. Jeśli jesteś właścicielem subkonta, możesz nie mieć dostępu do identyfikatora konta nadrzędnego lub konta głównego.