W tej dokumentacji znajdziesz szczegółowe instrukcje konfigurowania protokołu OAuth 2.0 w aplikacji podczas uzyskiwania dostępu do interfejsów API hoteli, takich jak Travel Partner API i Price Feeds API. Aby autoryzować aplikację, przeczytaj artykuł 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 identyfikacji za pomocą konta usługi powiązanego z kontem Google. Konto usługi wysyła klucz prywatny w zamian za token dostępu OAuth 2.0. Możesz go używać w wywołaniach interfejsów API hoteli w przypadku danych tylko do odczytu, takich jak ceny, informacje o hotelach i dane raportowania diagnostycznego dotyczące pliku danych o cenach hoteli.
Tokeny dostępu są ważne przez godzinę (3600 sekund).
Jeśli wcześniej wdrożono ClientLogin, podejście OAuth 2.0 jest podobne, ale występują te różnice:
- Aplikacja używa konta usługi Google do uzyskiwania dostępu do interfejsu API.
- Podczas wywoływania interfejsów API przekazujesz token dostępu OAuth 2.0 w
Authorizationnagłówku HTTP.
Aby skonfigurować konto do korzystania z OAuth 2.0 w przypadku dowolnego interfejsu API Google Hotels, wykonaj te czynności:
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 zarządzania danymi o ruchu, uwierzytelnianiu i informacjami o płatnościach za interfejsy API Google, z których korzystają Twoje projekty, oraz do ich wyświetlania.
W konsoli Google Cloud projekt to zbiór ustawień, danych logowania i metadanych aplikacji, nad którą pracujesz i 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 interfejsu 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:
Zaloguj się na konto Gmail lub konto Google.
Otwórz konsolę Google Cloud. Jeśli to Twój pierwszy projekt, w widoku głównym pojawi się przycisk UTWÓRZ PROJEKT:
Kliknij przycisk UTWÓRZ PROJEKT. W konsoli Google Cloud pojawi się okno Nowy projekt:
Wpisz przyjazną nazwę nowego projektu w polu Nazwa projektu. Pod polem konsola Google Cloud wygeneruje identyfikator projektu, który będzie unikalny we wszystkich projektach. Jeśli na przykład wpiszesz „Mój nowy projekt”, konsola Google Cloud przypisze identyfikator taki jak
my-new-project-266022.Aby utworzyć nowy projekt, kliknij przycisk Utwórz.
W menu nawigacyjnym wybierz Interfejsy API i usługi > Panel informacyjny.
Na ilustracji poniżej widać menu nawigacyjne w lewym górnym rogu konsoli Google Cloud. Wyświetli się widok Panel projektu:
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 interakcjach typu serwer-serwer, np. między aplikacją internetową a danymi hotelu.
Aby utworzyć i skonfigurować konto usługi:
W widoku głównym Konsoli interfejsów API Google kliknij Dane logowania w menu nawigacyjnym po lewej stronie. W konsoli Google Cloud wyświetli się widok Dane logowania.
W widoku Dane logowania wyświetlają się identyfikatory klientów i dane logowania do Twojego projektu. Aplikacja używa identyfikatora klienta podczas wysyłania żądania tokena dostępu OAuth 2.0. Nowe projekty nie mają jeszcze klientów ani danych logowania.
Kliknij link Dane logowania w sekcji Interfejsy API i usługi.
Kliknij przycisk Utwórz dane logowania i wybierz z menu Klucz konta usługi. Wyświetli się widok Utwórz klucz konta usługi.
W filtrze Konto usługi wybierz Nowe konto usługi.
Wpisz nazwę konta usługi i identyfikator konta usługi.
Nazwa może być dowolna, ale identyfikator konta musi być unikalny we wszystkich projektach. Konsola Google Cloud wygeneruje dla Ciebie unikalny identyfikator konta na podstawie wpisanej nazwy.
Wybierz typ klucza JSON. Wymagany jest format JSON.
Kliknij przycisk Utwórz. Konsola Google Cloud generuje parę kluczy prywatnych lub publicznych dla Twojego projektu. Klucz prywatny zostanie zapisany w domyślnej lokalizacji, w której przeglądarka przechowuje pobrane pliki. Musisz pobrać plik w
.JSONformacie.Klucza prywatnego używasz w skryptach lub innych aplikacjach, które uzyskują dostęp do Twojego interfejsu API.
Po zakończeniu generowania kluczy w konsoli Google Cloud pojawi się komunikat „Utworzono konto usługi”.
Kliknij przycisk OK. W konsoli Google Cloud wrócisz do widoku Dane logowania. Aby potwierdzić szczegóły konta usługi i wyświetlić konto usługi powiązane z Twoim projektem, w tym widoku kliknij Zarządzaj kontami usługi.
Konto usługi ma teraz powiązane z nim te dane logowania:
- Identyfikator klienta: unikalny identyfikator, którego aplikacja używa podczas wysyłania prośby o token 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 palców certyfikatu: identyfikator pobranego klucza prywatnego.
Więcej informacji znajdziesz w artykule o używaniu 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, który został utworzony w poprzednim kroku. Dostęp do tego konta możesz przyznać za pomocą ustawień udostępniania w Hotel Center.
Jeśli nie masz odpowiednich uprawnień do dodawania użytkowników do konta, skontaktuj się z zespołem Google Hotels za pomocą formularza kontaktowego i poproś o skonfigurowanie własności konta. Możesz poprosić o wysłanie do właściciela co najmniej jednego e-maila. Więcej informacji o dostępie do Hotel Center znajdziesz w artykule Łączenie kont Hotel Center i Google Ads.
Aby przyznać kontu usługi dostęp do danych Hotel Center:
W nowym oknie przeglądarki otwórz Centrum hoteli.
Na banerze Hotel Center by Google kliknij ikonę dodawania użytkownika, aby otworzyć okno udostępniania.
W polu Dodaj więcej osób wpisz adres e-mail konta usługi, które chcesz dodać do Hotel Center.
Pozostaw zaznaczoną opcję Powiadom osoby.
Wybierz Zarządzaj w filtrze.
Kliknij przycisk Zaproś.
Po dodaniu użytkowników do Hotel Center konto usługi powinno zostać włączone w celu uzyskania dostępu do interfejsu API w ciągu około 24 godzin.
Gdy Google powiadomi Cię, że dostęp do interfejsu API został włączony na Twoim koncie usługi, możesz zacząć korzystać z interfejsu API za pomocą OAuth 2.0.
Jak korzystać z protokołu OAuth 2.0
Aby uzyskać dostęp do interfejsu API, aplikacja musi zidentyfikować się w Google za pomocą wygenerowanego adresu e-mail konta usługi i klucza prywatnego. Mechanizm uwierzytelniania Google wymienia 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 sekcją Przygotowywanie się do wykonania wywołania interfejsu API z delegowaniem.
Zakresy
Oto SCOPES interfejsu API reklam hoteli:
Travel Partner API: "https://www.googleapis.com/auth/travelpartner"
Price Feeds API: "https://www.googleapis.com/auth/travel-partner-price-upload"
Konto usługi należy określić podczas tworzenia danych logowania. Zapoznaj się z artykułem 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 zmienianie 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.
Gdy tworzysz nowy projekt dla interfejsu Travel Partners API, musisz włączyć dostęp do nowego projektu w konsoli Google Cloud.
Aby włączyć dostęp do interfejsu Travel Partners API:
Otwórz widok panelu projektu.
Kliknij Włącz interfejsy API i usługi. Wyświetli się strona powitalna Biblioteki API.
W polu wyszukiwania zacznij wpisywać „Travel Partner API”. Konsola wyświetli listę interfejsów API pasujących do wpisanego tekstu.
W tabeli kliknij pasujący interfejs API. Konsola Google Cloud wyświetli opis tego interfejsu API.
Kliknij przycisk Włącz interfejs 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 jest teraz włączony w nowym projekcie na Twoim koncie Google.
Zakres interfejsu Travel Partner API to:
"https://www.googleapis.com/auth/travelpartner"
Punkt końcowy interfejsu Travel Partner API to:"https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"
Price Feeds API
Interfejs API plików danych o cenach umożliwia partnerom z branży hotelarskiej dostarczanie dostosowanych danych o cenach każdego hotelu. Partnerzy Google zajmujący się obiektami noclegowymi mogą używać protokołu OAuth 2.0 do uwierzytelniania i autoryzacji podczas przesyłania cen do Google. Aby uzyskać autoryzację interfejsu Price Feeds API, postępuj zgodnie z instrukcjami konfiguracji OAUTH 2.0.
Ważne informacje
Zwróć uwagę na istotne różnice w instrukcjach autoryzacji w przypadku interfejsu Price Feeds API.
Partnerzy powinni utworzyć nowy projekt OAuth 2.0 do przesyłania plików danych o cenach w konsoli Google Cloud, postępując zgodnie z instrukcjami podanymi w sekcji Konfiguracja OAuth 2.0.
Włączenie interfejsu Price Feeds API w konsoli Google Cloud NIE jest wymagane i można je zignorować. Wystarczy, że będziesz mieć 1 konto usługi i 1 klucz. Następnie użyj tego samego konta usługi i klucza, aby przyznać projektowi plików danych o cenach dostęp do danych Hotel Center. Wykonaj pozostałe czynności opisane w konfiguracji OAuth2.0, aby dokończyć konfigurowanie interfejsu API.
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 zakresem przesyłania cen zakwaterowania za pomocą pliku klucza konta usługi. Możesz autoryzować żądania do projektu Price Feeds, postępując zgodnie z instrukcjami podanymi w artykule Przygotowywanie się do wykonania delegowanego wywołania interfejsu API. Następnie wyodrębnij token dostępu z uzyskanych danych logowania i ustaw go w nagłówku HTTP "Authorization".
Zakres przesyłania cen noclegów to:"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 podobnie jak w przypadku korzystania ze statycznego adresu IP do uwierzytelniania i autoryzacji, z tą modyfikacją:
- Ustawianie tokena 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 OAuth 2.0 dla interfejsu Price Feeds API
Możesz przetestować konfigurację OAuth 2.0, przesyłając pusty plik lub dane z rzeczywistymi cenami do dowolnej ścieżki przesyłania. W 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? Szybkie sprawdzenie tych elementów może rozwiązać problem.
- Czy projekt został utworzony w Google Cloud Console?
- Czy usługa została włączona w projekcie?
- Czy po kliknięciu Utwórz identyfikator klienta i wybraniu Konto usługi pobrano plik
.JSON– klucz prywatny? - Czy otrzymano adres e-mail identyfikatora klienta konta usługi w formacie:
nnnnnnn@app_name.google.com.iam.gserviceaccount.com? - Czy udostępniasz konto Hotel Ads Center kontu usługi, klikając przycisk Udostępnij to konto?
- Czy adres e-mail konta usługi i identyfikator partnera zostały wysłane do technicznego menedżera konta?
- Czy wywołania interfejsu API przekazują ostatnio uzyskany token w nagłówku
Authorization? - Czy Twój token jest starszy niż godzina?
W tabeli poniżej znajdziesz listę typowych błędów i możliwych rozwiązań:
| Błąd | Opis |
|---|---|
| Invalid credentials | Może to oznaczać kilka rzeczy. Jeśli pojawi się ten błąd, sprawdź, czy:
|
| Not found | Punkt końcowy jest prawdopodobnie nieprawidłowy. Sprawdź, czy przesyłasz żądanie GET i czy adres URL żądania jest prawidłowy (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ę. Może na przykład zawierać błąd w pisowni części ścieżki. Sprawdź, czy w całej ścieżce używasz prawidłowych 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 musisz podać "alt=csv" GET. Interfejs Reports API nie obsługuje formatu JSON. |
| AccessTokenRefreshError/Invalid grant | Podczas uruchamiania aplikacji ten błąd może być spowodowany przez następujące przyczyny:
|
| 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ć jednym z tych zakresów:
|
| Forbidden | Używasz identyfikatora konta, do którego nie masz uprawnień dostępu. Jeśli jesteś właścicielem subkonta, możesz nie mieć dostępu do identyfikatora konta nadrzędnego lub głównego. |