Otorisasi API

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 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 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 Authorization saat memanggil API.

Untuk menyiapkan akun agar menggunakan OAuth 2.0 dengan Hotels API apa pun, lakukan langkah-langkah berikut:

  1. Membuat project baru di konsol Google Cloud

  2. Membuat akun layanan dan kredensialnya

  3. Berikan akses ke data hotel kepada akun layanan

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:

  1. Login ke Akun Gmail atau Akun Google Anda.

  2. Buka Konsol Google Cloud. Jika ini adalah project pertama Anda, tampilan utama akan menampilkan tombol CREATE PROJECT:

    fig1

  3. Klik tombol CREATE PROJECT. Konsol Google Cloud menampilkan dialog New Project:

    fig2

    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 "Project Baru Saya", konsol Google Cloud akan menetapkan ID seperti my-new-project-266022.

  4. Klik tombol Create untuk membuat project baru.

  5. Gunakan menu navigasi untuk memilih APIs & Services > Dashboard.

    fig3

    Gambar berikut menunjukkan menu navigasi di kiri atas konsol Google Cloud. Tindakan ini akan menampilkan tampilan Dashboard untuk project Anda:

    fig4

Untuk informasi selengkapnya, lihat Membuat dan mengelola project.

Langkah 2: Buat akun layanan dan buat kredensialnya

Akun layanan digunakan oleh interaksi antar-server seperti interaksi antara aplikasi web dan data hotel Anda.

Untuk membuat dan mengonfigurasi akun layanan:

  1. Di tampilan utama Konsol API Google, klik Credentials di 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.

  2. Klik link Credentials in APIs and services.

  3. Klik tombol Create credentials, lalu pilih Service account key dari filter. Tampilan Create service account key akan ditampilkan.

  4. Dari filter Service account, pilih New service account.

  5. 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.

  6. Pilih JSON untuk jenis kunci. JSON diperlukan.

  7. 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.

    Anda menggunakan kunci pribadi dalam skrip atau aplikasi lain yang mengakses API Anda.

    Konsol Google Cloud menampilkan pesan "Service account created" saat selesai membuat kunci.

  8. Klik tombol OK, got it. Konsol Google Cloud akan mengembalikan Anda ke tampilan Credentials. Untuk mengonfirmasi detail tentang akun layanan dan melihat akun layanan yang terkait dengan project Anda, klik Manage service accounts 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 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 memberikan akses ke Pusat Pengelolaan Hotel 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:

  1. Di jendela browser baru, buka Pusat Hotel. fig7

  2. Pada banner Pusat Hotel dari Google, klik ikon tambahkan pengguna untuk membuka dialog berbagi.

    fig8

  3. Di kolom Tambahkan lebih banyak orang, masukkan alamat email akun layanan yang ingin Anda tambahkan ke Pusat Pengelolaan Hotel.

  4. Pastikan opsi Beri tahu orang dipilih.

  5. Pilih Kelola dari filter.

  6. Klik tombol Undang.

  7. 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 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 dalam header Authorization di 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 artikel Membuat akun layanan dan membuat 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 penginapan mengambil informasi Pusat Pengelolaan Hotel dan mengubah data Pusat Pengelolaan Hotel untuk mengelola akun yang besar atau rumit.

Ikuti petunjuk penyiapan OAUTH 2.0 untuk mendapatkan otorisasi Travel Partner API Anda.

Saat membuat project baru untuk Travel Partners API, Anda perlu mengaktifkan akses ke project konsol Google Cloud baru.

Ikuti langkah-langkah untuk mengaktifkan akses ke Travel Partners API:

  1. Buka tampilan Dasbor project Anda.

  2. Klik Aktifkan API dan Layanan. Tindakan ini akan menampilkan halaman sambutan Library API.

  3. Di kolom penelusuran, mulai ketik "Travel Partner API", lalu konsol akan menampilkan daftar API yang cocok dengan yang Anda ketik.

  4. Klik API yang cocok di tabel. Konsol Google Cloud menampilkan deskripsi tentang API tersebut.

  5. Klik tombol Enable API guna mengaktifkan API ini untuk project Anda.

Untuk informasi selengkapnya, lihat Mengaktifkan dan Menonaktifkan Layanan.

Travel Partner API kini 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 penginapan memberikan data harga yang disesuaikan untuk setiap hotel. Partner penginapan Google dapat menggunakan OAuth2.0 untuk mengautentikasi dan memberi otorisasi kepada diri mereka sendiri saat mengupload harga ke Google. Ikuti petunjuk penyiapan OAUTH 2.0 untuk mendapatkan otorisasi untuk Price Feeds API.

Poin yang Perlu Diingat

Perhatikan perbedaan penting dalam petunjuk otorisasi untuk Price Feeds API.

  1. Partner harus membuat project Feed Harga OAuth2.0 baru di konsol Google Cloud menggunakan petunjuk yang sama seperti yang diberikan dalam penyiapan OAuth 2.0.

  2. Mengaktifkan Price Feeds API di konsol Google Cloud NOT 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 lainnya 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 penginapan menggunakan file kunci akun layanan. Anda dapat memberikan otorisasi permintaan ke project Price Feeds dengan mengikuti petunjuk yang diberikan di Mempersiapkan untuk melakukan panggilan API yang didelegasikan, lalu mengekstrak token akses dari kredensial yang diperoleh dan menetapkannya 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 mirip dengan menggunakan IP statis untuk autentikasi dan otorisasi dengan modikasi 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 yang sebenarnya ke salah satu jalur upload. 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.

  1. Apakah Anda membuat project di Konsol Google Cloud?
  2. Apakah Anda telah mengaktifkan layanan di project Anda?
  3. Apakah Anda mendownload file .JSON—kunci pribadi setelah mengklik Buat client ID dan memilih Akun layanan?
  4. Apakah Anda mendapatkan alamat email client ID akun layanan dalam bentuk: nnnnnnn@app_name.google.com.iam.gserviceaccount.com?
  5. Apakah Anda membagikan akun Pusat Bantuan Iklan Hotel beserta akun layanan Anda dengan mengklik tombol Bagikan akun ini?
  6. Apakah Anda mengirimkan alamat email akun layanan dan ID partner Anda ke Manajer Akun Teknis (TAM)?
  7. Apakah panggilan API Anda meneruskan token yang baru diperoleh di header Authorization?
  8. 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, pastikan:
  • Anda menentukan header Authorization dengan token pemilik yang valid.
  • Masa berlaku token pemilik belum sampai satu jam. Token hanya berlaku selama satu jam.
  • Anda menentukan nama partner yang benar (dengan parameter string kueri partner ). Nilainya adalah ID partner unik, bukan nama partner yang muncul di Pusat Bantuan Iklan Hotel. Jika Anda tidak mengetahui ID partner, hubungi Manajer Akun Teknis (TAM).
Not found Kemungkinan besar format endpoint Anda salah. Pastikan Anda mengirimkan permintaan GET, dan 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. Reports API tidak mendukung JSON.
AccessTokenRefreshError/Invalid grant Saat menjalankan aplikasi, error ini mungkin disebabkan oleh hal berikut:
  • Alamat email akun layanan Anda salah. Periksa akun email di Konsol Google Cloud dan pastikan akun tersebut diizinkan untuk mengakses API Anda.
  • Alamat email tidak memiliki akses API. Periksa apakah alamat email tersebut diizinkan untuk mengakses data hotel Anda yang dibagikan melalui Pusat Pengelolaan Hotel.
  • File kunci bukanlah file yang benar untuk akun layanan. Gunakan konsol Google Cloud untuk mendownload sertifikat .JSON baru dan pastikan aplikasi Anda mengarah ke sertifikat yang benar.
HotelAdsAPIConnection object has no attribute credentials Saat menjalankan aplikasi, jalur ke file .JSON Anda salah.
Invalid scope Saat menjalankan aplikasi, cakupan API Anda harus berupa salah satu dari berikut:
  • "https://www.googleapis.com/auth/travelpartner"
  • "https://www.googleapis.com/auth/travel-partner-price-upload"
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.