Dokumentasi ini memberikan petunjuk langkah demi langkah untuk menyiapkan OAuth2.0 di ketika mengakses API hotel seperti Travel Partner API dan Price API Feeds. Lihat Menggunakan OAuth 2.0 untuk Mengakses Google API untuk memberikan otorisasi pada aplikasi Anda.
Penyiapan OAuth 2.0
OAuth 2.0 mengharuskan Anda mengidentifikasi diri menggunakan akun layanan yang terkait dengan Akun Google Anda. Akun layanan mengirimkan kredensial untuk mendapatkan token akses OAuth 2.0. Anda kemudian dapat menggunakan token ini di panggilan ke API hotel untuk data hanya baca, seperti harga, hotel, dan data pelaporan diagnostik tentang feed harga hotel.
Token akses berlaku selama satu jam (3.600 detik).
Jika sebelumnya Anda telah mengimplementasikan {i>ClientLogin<i}, pendekatan OAuth 2.0 yang serupa, dengan perbedaan berikut:
- Aplikasi Anda menggunakan akun layanan Google untuk mengakses API.
- Anda meneruskan token akses OAuth 2.0 di header HTTP
Authorization
saat memanggil API.
Untuk menyiapkan akun Anda agar dapat menggunakan OAuth 2.0 dengan Hotels API, lakukan hal berikut langkah:
Setiap langkah ini dijelaskan di bagian berikut.
Langkah 1: Buat Project konsol Google Cloud baru
Konsol Google Cloud digunakan untuk mengelola dan melihat data traffic, autentikasi, dan informasi penagihan untuk Google API yang project Anda gunakan.
Di konsol Google Cloud, project adalah kumpulan setelan, kredensial, dan metadata tentang aplikasi yang sedang Anda kerjakan, menggunakan resource Google Developer API dan Google Cloud.
Konsol Google Cloud juga digunakan untuk membuat kredensial API, mengaktifkan API, dan mengelola informasi tim dan penagihan yang terkait dengan project Anda.
Untuk membuat project konsol Google Cloud baru:
Login ke Gmail atau Akun Google Anda.
Buka Konsol Google Cloud. Jika ini adalah project pertama Anda, tampilan utama akan menampilkan CREATE PROJECT tombol:
Klik tombol CREATE PROJECT. Konsol Google Cloud menampilkan Dialog New Project:
Masukkan nama yang sesuai untuk project baru Anda di kolom input Project name. Di bawah kolom ini, konsol Google Cloud akan membuat project ID untuk Anda, yang memastikan bahwa ID tersebut unik di semua project. Misalnya, jika Anda memasukkan "My New Project", Konsol Google Cloud menetapkan ID seperti
my-new-project-266022
.Klik tombol Create untuk membuat project baru.
Gunakan menu navigasi untuk memilih API & Layanan > Dasbor.
Gambar berikut menampilkan menu navigasi di kiri atas konsol Google Cloud. Tindakan ini akan menampilkan tampilan Dasbor untuk proyek:
Untuk informasi selengkapnya, lihat Membuat dan mengelola project.
Langkah 2: Buat akun layanan dan buat kredensialnya
Akun layanan digunakan oleh interaksi server-ke-server seperti interaksi antara aplikasi web dan data hotel Anda.
Untuk membuat dan mengonfigurasi akun layanan:
Di tampilan utama Konsol API Google, klik Credentials di navigasi sebelah kiri. Konsol Google Cloud akan menampilkan Credentials {i>view<i}.
Tampilan Credentials menampilkan client ID dan kredensial untuk proyek. Aplikasi Anda menggunakan client ID saat meminta Token akses OAuth 2.0. Project baru tidak memiliki klien atau kredensial apa pun .
Klik link Credentials in APIs and services.
Klik tombol Create credentials, lalu pilih Service account key. dari filter. Tampilan Buat kunci akun layanan akan ditampilkan.
Dari filter Akun layanan, pilih Akun layanan baru.
Masukkan nama akun layanan dan ID akun layanan.
Nama dapat berupa apa pun yang Anda inginkan, tetapi ID akun harus unik di semua project. Konsol Google Cloud akan membuat ID akun unik untuk Anda, berdasarkan nama yang Anda masukkan.
Pilih JSON untuk jenis kunci. JSON diperlukan.
Klik tombol Buat. Konsol Google Cloud membuat pasangan kunci publik untuk proyek Anda. Kunci pribadi disimpan ke default di mana browser Anda menyimpan download. Anda harus mendownload file format
.JSON
.Anda menggunakan kunci pribadi dalam skrip Anda atau aplikasi lain yang mengakses API Anda.
Konsol Google Cloud menampilkan "Akun layanan dibuat" kirim pesan saat selesai membuat kunci.
Klik tombol OK, get it. Konsol Google Cloud mengembalikan Anda ke Credentials. Untuk mengonfirmasi detail tentang akun layanan dan untuk melihat akun layanan yang dikaitkan dengan project Anda, klik Manage akun layanan dalam tampilan ini.
Akun layanan kini memiliki kredensial berikut yang terkait dengannya:
- Client ID: ID unik yang digunakan aplikasi Anda saat meminta token akses OAuth 2.0.
- Alamat email: Alamat email yang dibuat untuk akun layanan, di formulir "account_name@account_name.google.com.iam.gserviceaccount.com".
- Sidik jari sertifikat: ID kunci pribadi yang Anda diunduh.
Untuk informasi selengkapnya, lihat Menggunakan OAuth 2.0 untuk Aplikasi Server ke Server.
Langkah 3: Berikan akses ke data Pusat Pengelolaan Hotel kepada akun layanan
Langkah terakhir adalah memberi akun layanan baru akses ke Pusat Pengelolaan Hotel. Akun layanan diidentifikasi oleh alamat email yang dibuat yang yang Anda buat di langkah sebelumnya. Anda memberikan akses ke akun ini menggunakan setelan berbagi Pusat Pengelolaan Hotel.
Jika Anda tidak memiliki akses yang sesuai untuk menambahkan pengguna ke akun, hubungi Tim Hotel di Google menggunakan formulir hubungi kami dan minta untuk menyiapkan kepemilikan untuk akun Anda. Anda dapat meminta satu atau beberapa email agar dibuat ke pemilik. Untuk informasi selengkapnya tentang akses Pusat Pengelolaan Hotel, lihat Menautkan Pusat Pengelolaan Hotel dan Google Ads.
Untuk memberi akun layanan akses ke data Pusat Pengelolaan Hotel Anda:
Di jendela browser baru, buka Pusat Pengelolaan Hotel.
Pada banner Pusat Pengelolaan Hotel oleh Google, klik ikon tambahkan pengguna untuk membuka dialog berbagi.
Di kolom Tambahkan orang lainnya, masukkan alamat email layanan akun yang ingin Anda tambahkan ke Pusat Pengelolaan Hotel.
Pastikan opsi Beri tahu orang tetap dipilih.
Pilih Kelola dari filter.
Klik tombol Undang.
Setelah menambahkan pengguna ke Pusat Pengelolaan Hotel, akun layanan Anda harus diaktifkan untuk akses API dalam waktu sekitar 24 jam.
Setelah Google memberi tahu Anda bahwa akses API diaktifkan untuk layanan Anda Anda dapat mulai mengakses API dengan OAuth 2.0.
Cara menggunakan OAuth 2.0
Untuk mengakses API, aplikasi Anda harus mengidentifikasi dirinya ke Google dengan
alamat email dan kunci pribadi yang dibuat oleh akun layanan.
mekanisme otentikasi menukar kunci ini
dengan token akses OAuth 2.0 yang
Anda meneruskan header Authorization
dalam panggilan API aplikasi.
Lihat Menyiapkan untuk melakukan Panggilan API yang didelegasikan.
Cakupan
Berikut adalah SCOPES
untuk Hotels API:
API Partner Perjalanan: "https://www.googleapis.com/auth/travelpartner"
API Harga Partner Perjalanan: "https://travelpartnerprices.googleapis.com"
API Feed Harga: "https://www.googleapis.com/auth/travel-partner-price-upload"
Anda harus menentukan akun layanan saat membuat kredensial. Rujuk ke Buat akun layanan dan buat kredensialnya.
Saat mengembangkan aplikasi, pastikan untuk mengikuti praktik terbaik untuk mengautentikasi aplikasi Anda menggunakan kunci API. Pelajari lebih lanjut.
Contoh
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)
API Partner Perjalanan
Travel Partner API memungkinkan partner penginapan mengambil Pusat Pengelolaan Hotel dan mengubah data Pusat Pengelolaan Hotel untuk mengelola akun yang besar atau kompleks.
Ikuti petunjuk penyiapan OAUTH 2.0 untuk mendapatkan otorisasi bagi Travel Partner API Anda.
Saat membuat project baru untuk Travel Partners API, Anda harus mengaktifkan akses ke project konsol Google Cloud baru Anda.
Ikuti langkah-langkah untuk mengaktifkan akses ke Travel Partners API:
Buka tampilan Dashboard project Anda.
Klik Aktifkan API dan Layanan. Tindakan ini akan menampilkan sambutan Library API kami.
Di kolom penelusuran, mulai ketik "Travel Partner API", lalu konsol menampilkan daftar API yang cocok dengan yang Anda ketik.
Klik API yang cocok dalam tabel. Konsol Google Cloud menampilkan deskripsi tentang API tersebut.
Klik tombol Enable API untuk mengaktifkan API ini untuk project Anda.
Untuk informasi selengkapnya, lihat Mengaktifkan dan Menonaktifkan Layanan.
Travel Partner API sekarang diaktifkan untuk project baru Akun Google Anda.
Cakupan Travel Partner API adalah:
"https://www.googleapis.com/auth/travelpartner"
Endpoint untuk Travel Partner API adalah:
"https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"
API Harga Partner Perjalanan
Travel Partner Pricing API memungkinkan partner penginapan mengirim harga properti ke Google. Hal ini juga disebut sebagai Harga Lama Menginap (LoS).
Ikuti petunjuk penyiapan OAUTH 2.0 untuk mendapatkan otorisasi bagi Travel Partner Prices API Anda.
Saat membuat project baru untuk Travel Partners Prices API, Anda harus mengaktifkan akses ke project Konsol Google Cloud baru Anda yang mirip dengan yang diberikan dalam Travel Partner API.
Lihat langkah-langkah yang disediakan di Travel Partner API dan penggantinya semua instance "Travel Partner API" dengan "Travel Partner Prices API" untuk mengaktifkan pada proyek Anda.
Cakupan Travel Partner Pricing API adalah:
"https://travelpartnerprices.googleapis.com"
Jalur upload untuk Travel Partner Prices API adalah:
"/travel/lodging/uploads/accounts/<account_id>/property_data"
API Feed Harga
Price Feeds API memungkinkan partner penginapan memberikan data harga yang disesuaikan untuk setiap hotel. Partner penginapan Google dapat menggunakan OAuth2.0 untuk mengautentikasi dan mengotorisasi diri mereka sendiri saat mengunggah harga ke Google. Ikuti petunjuk penyiapan OAUTH 2.0 untuk mendapatkan otorisasi Price Feeds API.
Poin yang Perlu Diingat
Perhatikan perbedaan penting dalam petunjuk otorisasi untuk Feed Harga Compute Engine API.
Partner harus membuat project OAuth2.0 Feed Harga baru di Konsol Google Cloud menggunakan petunjuk yang sama seperti yang diberikan dalam penyiapan OAuth 2.0.
Mengaktifkan Price Feeds API di Konsol Google Cloud TIDAK diperlukan dan dapat diabaikan. Anda hanya memerlukan satu akun layanan & lalu gunakan perintah akun layanan & kunci untuk memberi akses project Feed Harga ke Hotel Anda Pusatkan data. Ikuti langkah-langkah selanjutnya yang disebutkan dalam penyiapan OAuth2.0 untuk menyelesaikan konfigurasi API Anda.
Mendapatkan token akses OAuth2.0 untuk Feed Harga
Langkah berikutnya adalah mendapatkan token akses OAuth2.0 dengan upload harga penginapan
menggunakan file kunci akun layanan. Anda dapat mengizinkan permintaan ke
Project Feed Harga dengan mengikuti petunjuk yang diberikan di
Persiapan untuk melakukan panggilan API yang didelegasikan
kemudian mengekstrak token akses dari
kredensial yang diperoleh dan mengaturnya dalam
header HTTP "Authorization"
.
Cakupan untuk upload harga penginapan adalah:
"https://www.googleapis.com/auth/travel-partner-price-upload"
Upload Harga
Setelah mendapatkan token akses, partner dapat mengupload feed harga mereka yang mirip dengan menggunakan IP statis untuk otentikasi dan otorisasi dengan modifikasi:
- Tetapkan token akses di header 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>
Menguji penyiapan OAuth2.0 untuk Price Feeds API
Anda dapat menguji penyiapan OAuth2.0 dengan mengupload file kosong atau dengan harga sebenarnya data ke salah satu jalur upload. Gunakan tabel untuk memeriksa respons HTTP Anda .
Status Respons HTTP | Pesan |
---|---|
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 |
Pemecahan masalah
Mengalami masalah? Melakukan pemeriksaan cepat pada item berikut dapat mengatasi menyelesaikan masalah.
- Apakah Anda membuat project di Konsol Google Cloud?
- Apakah Anda mengaktifkan layanan di project Anda?
- Apakah Anda mendownload file
.JSON
—kunci pribadi setelah mengklik Buat client ID dan pilih Akun layanan? - Apakah Anda mendapatkan alamat email client ID akun layanan yang berisi formulir:
nnnnnnn@app_name.google.com.iam.gserviceaccount.com
? - Apakah Anda membagikan akun Pusat Bantuan Iklan Hotel ke akun layanan tersebut dengan mengklik tombol Bagikan akun ini?
- Apakah Anda mengirimkan alamat email akun layanan dan ID partner Anda ke Manajer Akun Teknis (TAM) Anda?
- Apakah panggilan API Anda meneruskan token yang baru diperoleh di
Header
Authorization
? - Apakah token Anda sudah lebih dari 1 jam?
Tabel berikut mencantumkan beberapa error umum dan kemungkinan penyelesaiannya:
Error | Deskripsi |
---|---|
Invalid credentials | Informasi ini bisa
berarti beberapa hal. Jika Anda mengalami error ini,
pastikan bahwa:
|
Not found | Kemungkinan besar format endpoint Anda salah. Periksa apakah Anda mengirimkan
permintaan GET , dan bahwa URL permintaan valid (sesuai dengan
ke sintaksis API yang Anda coba akses). |
Invalid string value | Satu atau beberapa bagian endpoint berisi sintaksis yang tidak valid. Misalnya, Anda mungkin telah salah mengeja bagian jalur. Pastikan Anda menggunakan garis bawah, kapitalisasi, dan pemilihan kata yang benar di seluruh jalur. |
Unsupported output format | Error ini paling sering terjadi saat menggunakan Reports API. Anda harus
tentukan "alt=csv" di URL GET Anda
permintaan. Reports API tidak mendukung JSON. |
AccessTokenRefreshError/Invalid grant | Saat menjalankan aplikasi Anda, error ini mungkin disebabkan karena
berikut ini:
|
HotelAdsAPIConnection object has no attribute credentials | Saat menjalankan aplikasi, jalur ke file .JSON Anda adalah
salah. |
Invalid scope | Saat menjalankan aplikasi, cakupan API Anda harus berupa salah satu dari hal berikut:
|
Forbidden | ID akun yang Anda gunakan adalah ID yang tidak Anda miliki otorisasinya untuk diakses. Jika Anda adalah pemilik sub-akun, Anda mungkin tidak dapat mengakses ID akun induk atau root. |