Dokumentasi ini memberikan petunjuk langkah demi langkah untuk menyiapkan OAuth2.0 di aplikasi Anda saat mengakses API hotel seperti Travel Partner API dan Price Feeds API. Lihat Menggunakan OAuth 2.0 untuk Mengakses Google API guna memberi 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 kunci pribadi Anda untuk mendapatkan token akses OAuth 2.0. Kemudian, Anda dapat menggunakan token ini dalam panggilan ke API hotel untuk data hanya baca, seperti harga, hotel, dan data pelaporan diagnostik tentang feed harga hotel Anda.
Token akses berlaku selama satu jam (3.600 detik).
Jika sebelumnya Anda telah mengimplementasikan ClientLogin, pendekatan OAuth 2.0 serupa dengan perbedaan berikut:
- Aplikasi Anda menggunakan akun layanan Google untuk mengakses API.
- Anda meneruskan token akses OAuth 2.0 di header HTTP
Authorizationsaat memanggil API.
Untuk menyiapkan akun agar menggunakan OAuth 2.0 dengan API Hotel apa pun, lakukan langkah-langkah berikut:
Setiap langkah ini dijelaskan di bagian selanjutnya.
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 digunakan project Anda.
Di konsol Google Cloud, project adalah kumpulan setelan, kredensial, dan metadata tentang aplikasi yang sedang Anda kerjakan yang menggunakan Google Developer API dan resource Google Cloud.
Konsol Google Cloud juga digunakan untuk membuat kredensial API, mengaktifkan API, serta mengelola tim dan informasi penagihan yang terkait dengan project Anda.
Untuk membuat project Konsol Google Cloud baru:
Login ke Akun Gmail atau Google Anda.
Buka Konsol Google Cloud. Jika ini adalah project pertama Anda, tampilan utama akan menampilkan tombol CREATE PROJECT:
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 menghasilkan project ID untuk Anda, yang memastikan bahwa ID tersebut unik di semua project. Misalnya, jika Anda memasukkan "Project Baru Saya", konsol Google Cloud akan menetapkan ID seperti
my-new-project-266022.Klik tombol Create untuk membuat project baru.
Gunakan menu navigasi untuk memilih APIs & Services > Dashboard.
Gambar berikut menunjukkan menu navigasi di kiri atas konsol Google Cloud. Tindakan ini akan menampilkan tampilan Dashboard untuk project Anda:
Untuk mengetahui informasi selengkapnya, lihat Membuat dan mengelola project.
Langkah 2: Buat akun layanan dan hasilkan kredensialnya
Akun layanan digunakan oleh interaksi antar-server seperti interaksi antara aplikasi web dan data hotel Anda.
Untuk membuat dan mengonfigurasi akun layanan:
Di tampilan utama Konsol API Google, klik Credentials pada navigasi sebelah kiri. Konsol Google Cloud menampilkan tampilan Credentials.
Tampilan Credentials menampilkan client ID dan kredensial untuk project Anda. Aplikasi Anda menggunakan client ID saat meminta token akses OAuth 2.0. Project baru belum memiliki klien atau kredensial.
Klik link Credentials in APIs and services.
Klik tombol Buat kredensial, lalu pilih Kunci akun layanan dari filter. Tampilan Create service account key akan ditampilkan.
Dari filter Service account, pilih New service account.
Masukkan nama akun layanan dan ID akun layanan.
Anda dapat menentukan nama apa pun yang diinginkan, 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 menghasilkan pasangan kunci pribadi atau publik untuk project Anda. Kunci pribadi disimpan ke lokasi default tempat browser Anda menyimpan hasil download. Anda harus mendownload file format
.JSON.Gunakan kunci pribadi dalam skrip Anda atau aplikasi lain yang mengakses API Anda.
Konsol Google Cloud menampilkan pesan "Akun layanan dibuat" saat selesai membuat kunci.
Klik tombol OK, paham. Konsol Google Cloud akan mengembalikan Anda ke tampilan Credentials. Untuk mengonfirmasi detail tentang akun layanan Anda dan melihat akun layanan yang terkait dengan project Anda, klik Kelola akun layanan pada 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, dalam format "account_name@project_name.google.com.iam.gserviceaccount.com".
- Sidik jari sertifikat: ID kunci pribadi yang Anda download.
Untuk mengetahui informasi selengkapnya, lihat Menggunakan OAuth 2.0 untuk Aplikasi Server ke Server.
Langkah 3: Berikan akses ke data Pusat Pengelolaan Hotel Anda kepada akun layanan
Langkah terakhir adalah memberikan akses ke Pusat Pengelolaan Hotel Anda kepada akun layanan baru. Akun layanan diidentifikasi berdasarkan alamat email yang Anda buat di langkah sebelumnya. Anda memberikan akses ke akun ini menggunakan setelan berbagi Pusat Pengelolaan Hotel.
Jika Anda tidak memiliki akses yang tepat untuk menambahkan pengguna ke akun, hubungi tim Google Hotel menggunakan formulir hubungi kami dan minta untuk menyiapkan kepemilikan akun Anda. Anda dapat meminta satu atau beberapa email untuk dijadikan pemilik. Untuk mengetahui informasi selengkapnya tentang akses Pusat Pengelolaan Hotel, lihat Menautkan Pusat Pengelolaan Hotel dan Google Ads.
Untuk memberikan akses ke data Pusat Pengelolaan Hotel kepada akun layanan:
Di jendela browser baru, buka Pusat Bantuan Hotel.
Pada banner Pusat Pengelolaan Hotel oleh Google, klik ikon tambahkan pengguna untuk membuka dialog berbagi.
Di kolom Tambahkan orang lain, masukkan alamat email akun layanan yang ingin Anda tambahkan ke Pusat Pengelolaan Hotel.
Pastikan opsi Beri tahu orang dipilih.
Pilih Kelola dari filter.
Klik tombol Undang.
Setelah Anda menambahkan pengguna ke Pusat Pengelolaan Hotel, akun layanan Anda akan diaktifkan untuk akses API dalam waktu sekitar 24 jam.
Setelah Google memberi tahu Anda bahwa akses API diaktifkan untuk akun 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 dihasilkan akun layanan. Mekanisme autentikasi Google menukar kunci ini dengan token akses OAuth 2.0 yang Anda teruskan di header Authorization dalam panggilan API aplikasi Anda.
Lihat Bersiap untuk melakukan Panggilan API yang didelegasikan.
Cakupan
Berikut adalah SCOPES untuk Hotels API:
Travel Partner API: "https://www.googleapis.com/auth/travelpartner"
Price Feeds API: "https://www.googleapis.com/auth/travel-partner-price-upload"
Anda harus menentukan akun layanan saat membuat kredensial. Lihat Membuat akun layanan dan menghasilkan kredensialnya.
Saat mengembangkan aplikasi, pastikan Anda mengikuti praktik terbaik untuk mengautentikasi aplikasi 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://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
Travel Partner API memungkinkan partner akomodasi mengambil informasi 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 Partner API, Anda harus mengaktifkan akses ke project Konsol Google Cloud baru Anda.
Ikuti langkah-langkah untuk mengaktifkan akses ke Travel Partners API:
Buka tampilan Dasbor project Anda.
Klik Aktifkan API dan Layanan. Tindakan ini akan menampilkan halaman sambutan Library API.
Di kolom penelusuran, mulai ketik "Travel Partner API", lalu konsol akan menampilkan daftar API yang cocok dengan yang Anda ketik.
Klik API yang cocok di tabel. Konsol Google Cloud menampilkan deskripsi tentang API tersebut.
Klik tombol Enable API guna mengaktifkan API ini untuk project Anda.
Untuk mengetahui 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>"
Price Feeds API
Price Feeds API memungkinkan partner akomodasi memberikan data harga yang disesuaikan untuk setiap hotel. Partner akomodasi Google dapat menggunakan OAuth2.0 untuk mengautentikasi dan memberikan otorisasi pada diri mereka sendiri saat mengupload harga ke Google. Ikuti petunjuk penyiapan OAUTH 2.0 untuk mendapatkan otorisasi bagi Price Feeds API.
Poin yang Perlu Diingat
Perhatikan perbedaan penting dalam petunjuk otorisasi untuk Price Feeds 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 & kunci, lalu menggunakan akun layanan & kunci yang sama untuk memberikan akses project Feed Harga ke data Pusat Pengelolaan Hotel Anda. 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 cakupan upload harga akomodasi menggunakan file kunci akun layanan. Anda dapat memberi otorisasi permintaan ke project Feed Harga dengan mengikuti petunjuk yang diberikan di Mempersiapkan panggilan API yang didelegasikan, lalu mengekstrak token akses dari kredensial yang diperoleh dan menyetelnya di header HTTP "Authorization".
Cakupan untuk upload harga penginapan adalah:
"https://www.googleapis.com/auth/travel-partner-price-upload"
Mengupload Harga
Setelah mendapatkan token akses, partner dapat mengupload feed harga mereka dengan cara yang sama seperti menggunakan IP statis untuk autentikasi dan otorisasi dengan modifikasi berikut:
- Menetapkan 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 data harga sebenarnya ke jalur upload mana pun. Gunakan tabel untuk memeriksa status 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 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 memilih Akun layanan? - Apakah Anda mendapatkan alamat email client ID akun layanan dalam bentuk:
nnnnnnn@app_name.google.com.iam.gserviceaccount.com? - Apakah Anda membagikan akun Pusat Bantuan Iklan Hotel beserta akun layanan Anda dengan mengklik tombol Bagikan akun ini?
- Apakah Anda mengirimkan alamat email akun layanan dan ID partner Anda kepada 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 | Hal ini dapat berarti beberapa hal. Jika Anda mengalami error ini,
periksa apakah:
|
| Not found | Kemungkinan besar format endpoint Anda salah. Periksa apakah Anda mengirimkan
permintaan GET, dan apakah URL permintaan tersebut valid (sesuai
dengan 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
menentukan "alt=csv" di URL permintaan GET
Anda. Reports API tidak mendukung JSON. |
| AccessTokenRefreshError/Invalid grant | Saat menjalankan aplikasi, error ini mungkin disebabkan oleh
berikut:
|
| HotelAdsAPIConnection object has no attribute credentials | Saat menjalankan aplikasi, jalur ke file .JSON Anda salah. |
| Invalid scope | Saat menjalankan aplikasi, cakupan API Anda harus salah satu dari berikut ini:
|
| Forbidden | ID akun yang Anda gunakan adalah ID yang tidak dapat Anda akses. Jika Anda adalah pemilik sub-akun, Anda mungkin tidak dapat mengakses ID akun induk atau root. |