การให้สิทธิ์ API

เอกสารประกอบนี้แสดงวิธีการทีละขั้นตอนในการตั้งค่า OAuth2.0 ในแอปพลิเคชันเมื่อเข้าถึง API ของโรงแรม เช่น Travel Partner API และ Price ฟีด API โปรดดูการใช้ OAuth 2.0 เพื่อเข้าถึง Google APIs เพื่อให้สิทธิ์แอปพลิเคชัน

การตั้งค่า OAuth 2.0

OAuth 2.0 กำหนดให้คุณระบุตัวตนโดยใช้บัญชีบริการที่เชื่อมโยงกับบัญชี Google ของคุณ บัญชีบริการจะส่งคีย์ส่วนตัวแลกกับโทเค็นการเข้าถึง OAuth 2.0 จากนั้น คุณจะใช้โทเค็นนี้ในการเรียกใช้ API ของโรงแรมสําหรับข้อมูลอ่านอย่างเดียว เช่น ข้อมูลการรายงานเรื่องราคา โรงแรม และการวินิจฉัยเกี่ยวกับฟีดราคาโรงแรมได้

โทเค็นเพื่อการเข้าถึงจะใช้งานได้เป็นระยะเวลา 1 ชั่วโมง (3,600 วินาที)

หากก่อนหน้านี้คุณใช้ ClientLogin วิธีการของ OAuth 2.0 จะคล้ายคลึงกันแต่มีความแตกต่างดังต่อไปนี้

  • แอปพลิเคชันจะใช้บัญชีบริการของ Google เพื่อเข้าถึง API
  • คุณต้องส่งโทเค็นเพื่อการเข้าถึง OAuth 2.0 ในส่วนหัว HTTP Authorization เมื่อเรียกใช้ API

หากต้องการตั้งค่าบัญชีเพื่อใช้ OAuth 2.0 กับ Hotels API ใดก็ตาม ให้ทำตามขั้นตอนต่อไปนี้

  1. สร้างโปรเจ็กต์ใหม่ในคอนโซล Google Cloud

  2. สร้างบัญชีบริการและข้อมูลเข้าสู่ระบบของบัญชีดังกล่าว

  3. ให้สิทธิ์เข้าถึงข้อมูลโรงแรมแก่บัญชีบริการ

อ่านข้อมูลเกี่ยวกับแต่ละขั้นตอนเหล่านี้ได้ในส่วนต่อไปนี้

ขั้นตอนที่ 1: สร้างโปรเจ็กต์คอนโซล Google Cloud ใหม่

Google Cloud Console ใช้สำหรับจัดการและดูข้อมูลการรับส่งข้อมูล การตรวจสอบสิทธิ์ รวมถึงข้อมูลสำหรับการเรียกเก็บเงินของ Google APIs ที่โปรเจ็กต์ใช้

ในคอนโซล Google Cloud โปรเจ็กต์คือชุดการตั้งค่า ข้อมูลเข้าสู่ระบบ และข้อมูลเมตาเกี่ยวกับแอปพลิเคชันที่คุณกำลังพัฒนาอยู่ซึ่งใช้ Google Developer API และทรัพยากร Google Cloud

นอกจากนี้ คุณยังใช้คอนโซล Google Cloud เพื่อสร้างข้อมูลเข้าสู่ระบบ API, เปิดใช้งาน API รวมถึงจัดการทีมและข้อมูลสำหรับการเรียกเก็บเงินที่เชื่อมโยงกับโปรเจ็กต์ได้ด้วย

วิธีสร้างโปรเจ็กต์คอนโซล Google Cloud ใหม่

  1. ลงชื่อเข้าใช้บัญชี Gmail หรือ Google

  2. เปิดคอนโซล Google Cloud หากนี่เป็นโปรเจ็กต์แรกของคุณ มุมมองหลักจะแสดงปุ่มสร้างโปรเจ็กต์ ดังนี้

    fig1

  3. คลิกปุ่มสร้างโปรเจ็กต์ คอนโซล Google Cloud จะแสดงกล่องโต้ตอบโปรเจ็กต์ใหม่ ดังนี้

    fig2

    ป้อนชื่อที่เหมาะสมกับโปรเจ็กต์ใหม่ในช่องป้อนข้อมูลชื่อโปรเจ็กต์ โดยคอนโซล Google Cloud จะสร้างรหัสโปรเจ็กต์ไว้ที่ด้านล่างของช่องดังกล่าวเพื่อให้แน่ใจว่ารหัสนั้นไม่ซ้ำกับโปรเจ็กต์อื่นๆ เช่น หากคุณป้อน "โปรเจ็กต์ใหม่ของฉัน" คอนโซล Google Cloud จะกำหนดรหัสเป็นmy-new-project-266022

  4. คลิกปุ่มสร้างเพื่อสร้างโปรเจ็กต์ใหม่

  5. ใช้เมนูการนำทางเพื่อเลือก API และบริการ > หน้าแดชบอร์ด

    fig3

    รูปภาพต่อไปนี้แสดงเมนูการนำทางที่ด้านซ้ายบนของคอนโซล Google Cloud โดยเมนูนี้จะแสดงมุมมองหน้าแดชบอร์ดสำหรับโปรเจ็กต์ของคุณ ดังนี้

    fig4

ดูข้อมูลเพิ่มเติมได้ที่การสร้างและจัดการโปรเจ็กต์

ขั้นตอนที่ 2: สร้างบัญชีบริการและสร้างข้อมูลเข้าสู่ระบบของบัญชีดังกล่าว

บัญชีบริการมีไว้สำหรับการโต้ตอบระหว่างเซิร์ฟเวอร์ เช่น การโต้ตอบระหว่างเว็บแอปพลิเคชันกับข้อมูลโรงแรมของคุณ

วิธีสร้างและกำหนดค่าบัญชีบริการมีดังนี้

  1. ในมุมมองหลักของคอนโซล Google API ให้คลิกข้อมูลเข้าสู่ระบบที่การนำทางด้านซ้าย คอนโซล Google Cloud จะแสดงมุมมองข้อมูลเข้าสู่ระบบ

    มุมมองข้อมูลเข้าสู่ระบบจะแสดงรหัสไคลเอ็นต์และข้อมูลเข้าสู่ระบบสำหรับโปรเจ็กต์ของคุณ แอปพลิเคชันจะใช้รหัสไคลเอ็นต์เมื่อขอโทเค็นการเข้าถึง OAuth 2.0 โปรเจ็กต์ใหม่จะยังไม่มีไคลเอ็นต์หรือข้อมูลเข้าสู่ระบบ

  2. คลิกลิงก์ข้อมูลเข้าสู่ระบบใน API และบริการ

  3. คลิกปุ่มสร้างข้อมูลเข้าสู่ระบบ แล้วเลือกคีย์ของบัญชีบริการจากตัวกรอง มุมมองสร้างคีย์ของบัญชีบริการจะปรากฏขึ้น

  4. จากตัวกรองบัญชีบริการ ให้เลือกบัญชีบริการใหม่

  5. ป้อนชื่อและรหัสบัญชีบริการ

    คุณจะตั้งชื่อบัญชีได้ตามต้องการ แต่รหัสบัญชีต้องไม่ซ้ำกับโปรเจ็กต์อื่นๆ Google Cloud Console จะสร้างรหัสบัญชีที่ไม่ซ้ำกันสำหรับคุณโดยอิงตามชื่อที่คุณป้อน

  6. เลือก JSON สำหรับประเภทคีย์ ต้องระบุ JSON

  7. คลิกที่ปุ่มสร้าง คอนโซล Google Cloud จะสร้างคู่คีย์ส่วนตัวหรือสาธารณะสำหรับโปรเจ็กต์ของคุณ ระบบจะบันทึกคีย์ส่วนตัวไปยังตำแหน่งเริ่มต้นที่เบราว์เซอร์ของคุณจัดเก็บการดาวน์โหลดไว้ คุณต้องดาวน์โหลดไฟล์รูปแบบ .JSON

    คุณใช้คีย์ส่วนตัวในสคริปต์หรือแอปพลิเคชันอื่นๆ ที่เข้าถึง API ของคุณ

    คอนโซล Google Cloud จะแสดงข้อความ "สร้างบัญชีบริการแล้ว" เมื่อสร้างคีย์เสร็จสมบูรณ์

  8. คลิกปุ่มรับทราบ Google Cloud Console จะนำคุณกลับไปยังมุมมองข้อมูลเข้าสู่ระบบ หากต้องการยืนยันรายละเอียดเกี่ยวกับบัญชีบริการและดูบัญชีบริการที่เชื่อมโยงกับโปรเจ็กต์ ให้คลิกจัดการบัญชีบริการในมุมมองนี้

    ขณะนี้บัญชีบริการเชื่อมโยงกับข้อมูลเข้าสู่ระบบต่อไปนี้

    • รหัสไคลเอ็นต์: ตัวระบุที่ไม่ซ้ำกันซึ่งแอปพลิเคชันจะใช้เมื่อขอโทเค็นการเข้าถึง OAuth 2.0
    • อีเมล: อีเมลที่สร้างขึ้นสำหรับบัญชีบริการในรูปแบบ "account_name@project_name.google.com.iam.gserviceaccount.com"
    • ลายนิ้วมือสำหรับใบรับรอง: รหัสของคีย์ส่วนตัวที่คุณดาวน์โหลด

ดูข้อมูลเพิ่มเติมได้ที่การใช้ OAuth 2.0 สำหรับแอปพลิเคชันที่มีการโต้ตอบระหว่างเซิร์ฟเวอร์กับเซิร์ฟเวอร์

ขั้นตอนที่ 3: ให้สิทธิ์เข้าถึงข้อมูล Hotel Center แก่บัญชีบริการ

ขั้นตอนสุดท้ายคือการให้สิทธิ์เข้าถึง Hotel Center แก่บัญชีบริการใหม่ อีเมลที่คุณสร้างขึ้นในขั้นตอนก่อนหน้าจะเป็นตัวระบุบัญชีบริการดังกล่าว คุณให้สิทธิ์เข้าถึงบัญชีนี้โดยใช้การตั้งค่าการแชร์ใน Hotel Center

หากคุณไม่มีสิทธิ์เข้าถึงที่เหมาะสมในการเพิ่มผู้ใช้ในบัญชี โปรดติดต่อทีมโรงแรมของ Google โดยใช้แบบฟอร์มติดต่อเราและขอตั้งค่าการเป็นเจ้าของบัญชี คุณขอเป็นเจ้าของอีเมลได้อย่างน้อย 1 รายการ ดูข้อมูลเพิ่มเติมเกี่ยวกับการเข้าถึง Hotel Center ได้ที่ลิงก์ Hotel Center กับ Google Ads

วิธีให้สิทธิ์เข้าถึงข้อมูล Hotel Center แก่บัญชีบริการมีดังนี้

  1. เปิดHotel Center ในหน้าต่างเบราว์เซอร์ใหม่ fig7

  2. ในแบนเนอร์ Hotel Center by Google ให้คลิกไอคอนเพิ่มผู้ใช้เพื่อเปิดกล่องโต้ตอบการแชร์

    fig8

  3. ในช่องเพิ่มบุคคลอื่น ให้ป้อนอีเมลของบัญชีบริการที่ต้องการเพิ่มลงใน Hotel Center

  4. เลือกตัวเลือกแจ้งเตือนบุคคลอื่นไว้

  5. เลือกจัดการจากตัวกรอง

  6. คลิกปุ่มเชิญ

  7. หลังจากเพิ่มผู้ใช้ใน Hotel Center แล้ว ระบบจะเปิดใช้บัญชีบริการสำหรับการเข้าถึง API ภายในประมาณ 24 ชั่วโมง

หลังจากที่ Google แจ้งว่ามีการเปิดใช้การเข้าถึง API สำหรับบัญชีบริการแล้ว คุณจะเริ่มเข้าถึง API ด้วย OAuth 2.0 ได้

วิธีใช้ OAuth 2.0

หากต้องการเข้าถึง API แอปพลิเคชันของคุณต้องระบุตัวตนกับ Google ด้วยคีย์ส่วนตัวและอีเมลที่สร้างขึ้นของบัญชีบริการ กลไกการตรวจสอบสิทธิ์ของ Google จะแลกเปลี่ยนคีย์นี้สำหรับโทเค็นเพื่อการเข้าถึง OAuth 2.0 ที่คุณส่งในส่วนหัว Authorization เมื่อทำการเรียก API ของแอป

โปรดดูเตรียมพร้อมทำการเรียก API ที่มอบสิทธิ์

ขอบเขต

SCOPES สำหรับ Hotels API มีดังนี้

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

Price Feeds API: "https://www.googleapis.com/auth/travel-partner-price-upload"

คุณควรระบุบัญชีบริการเมื่อสร้างข้อมูลเข้าสู่ระบบ โปรดดูหัวข้อสร้างบัญชีบริการและสร้างข้อมูลเข้าสู่ระบบของบัญชีดังกล่าว

ขณะที่พัฒนาแอปพลิเคชัน โปรดทำตามแนวทางปฏิบัติแนะนำเพื่อตรวจสอบสิทธิ์แอปพลิเคชันโดยใช้คีย์ API ดูข้อมูลเพิ่มเติม

ตัวอย่าง

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 ช่วยให้พาร์ทเนอร์ที่พักเรียกข้อมูล Hotel Center และเปลี่ยนแปลงข้อมูล Hotel Center เพื่อจัดการบัญชีขนาดใหญ่หรือซับซ้อนได้

ทำตามวิธีการตั้งค่า OAuth 2.0 เพื่อรับสิทธิ์สำหรับ Travel Partner API

เมื่อสร้างโปรเจ็กต์ใหม่สำหรับ Travel Partner API คุณต้องเปิดใช้สิทธิ์เข้าถึงโปรเจ็กต์คอนโซล Google Cloud ใหม่

ทําตามขั้นตอนต่อไปนี้เพื่อเปิดใช้สิทธิ์เข้าถึง Travel Partners API

  1. ไปที่มุมมองหน้าแดชบอร์ดของโปรเจ็กต์

  2. คลิกเปิดใช้ API และบริการ การดำเนินการนี้จะแสดงหน้ายินดีต้อนรับของไลบรารี API

  3. พิมพ์ "Travel Partner API" ในช่องค้นหา จากนั้นคอนโซลจะแสดงรายการ API ที่ตรงกับสิ่งที่คุณพิมพ์

  4. คลิก API ที่ตรงกันในตาราง คอนโซล Google Cloud จะแสดงคำอธิบายเกี่ยวกับ API นั้น

  5. คลิกปุ่มเปิดใช้ API เพื่อเปิดใช้ API นี้สำหรับโปรเจ็กต์ของคุณ

โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปิดและปิดใช้บริการ

ตอนนี้ คุณได้เปิดใช้ Travel Partner API สำหรับโปรเจ็กต์ใหม่ของบัญชี Google แล้ว

ขอบเขตของ Travel Partner API มีดังนี้ "https://www.googleapis.com/auth/travelpartner"

ปลายทางของ Travel Partner API คือ "https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"

Price Feeds API

Price Feeds API ช่วยให้พาร์ทเนอร์ที่พักระบุข้อมูลราคาที่กำหนดเองสำหรับโรงแรมทุกแห่งได้ พาร์ทเนอร์ที่พักของ Google สามารถใช้ OAuth2.0 เพื่อตรวจสอบสิทธิ์และให้สิทธิ์ตนเองเมื่ออัปโหลดราคาไปยัง Google ทำตามวิธีการตั้งค่า OAUTH 2.0 เพื่อรับสิทธิ์สำหรับ Price Feeds API

สิ่งที่ควรทราบ

โปรดสังเกตความแตกต่างที่สำคัญในวิธีการให้สิทธิ์สำหรับ Price API

  1. พาร์ทเนอร์ควรสร้างโปรเจ็กต์ OAuth2.0 ของฟีดราคาใหม่ในคอนโซล Google Cloud โดยใช้วิธีการเดียวกับที่ระบุไว้ในการตั้งค่า OAuth 2.0

  2. คุณNOTจําเป็นต้องเปิดใช้ Price Feeds API ในคอนโซล Google Cloud และสามารถละเว้นได้ คุณต้องใช้บัญชีบริการและคีย์เพียงบัญชีเดียว แล้วใช้บัญชีบริการและคีย์เดียวกันนั้นเพื่อให้สิทธิ์เข้าถึงข้อมูล Hotel Center แก่โปรเจ็กต์ฟีดราคา ทำตามขั้นตอนที่เหลือที่กล่าวถึงในการตั้งค่า OAuth2.0 เพื่อกําหนดค่า API ให้เสร็จสมบูรณ์

รับโทเค็นการเข้าถึง OAuth2.0 สำหรับฟีดราคา

ขั้นตอนถัดไปคือรับโทเค็นการเข้าถึง OAuth2.0 ที่มีขอบเขตการอัปโหลดราคาที่พักโดยใช้ไฟล์คีย์บัญชีบริการ คุณสามารถให้สิทธิ์คำขอเข้าถึงโปรเจ็กต์ฟีดราคาได้โดยทําตามวิธีการที่ระบุไว้ในการเตรียมการเรียก API ที่มอบสิทธิ์ จากนั้นดึงข้อมูลโทเค็นการเข้าถึงจากข้อมูลเข้าสู่ระบบที่ได้รับและตั้งค่าในส่วนหัว HTTP "Authorization"

ขอบเขตของการอัปโหลดราคาที่พักมีดังนี้ "https://www.googleapis.com/auth/travel-partner-price-upload"

อัปโหลดราคา

หลังจากได้รับโทเค็นการเข้าถึงแล้ว พาร์ทเนอร์จะอัปโหลดฟีดราคาได้คล้ายกับการใช้ IP แบบคงที่สำหรับการตรวจสอบสิทธิ์และการให้สิทธิ์โดยมีการแก้ไขต่อไปนี้

  • ตั้งค่าโทเค็นการเข้าถึงในส่วนหัว 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>

ทดสอบการตั้งค่า OAuth2.0 สําหรับ Price Feeds API

คุณสามารถทดสอบการตั้งค่า OAuth2.0 ได้โดยอัปโหลดไฟล์เปล่าหรือไฟล์ที่มีข้อมูลราคาจริงไปยังเส้นทางการอัปโหลดใดก็ได้ ใช้ตารางเพื่อตรวจสอบสถานะการตอบกลับ HTTP

สถานะการตอบกลับ HTTP ข้อความ
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

การแก้ปัญหา

หากพบปัญหา การตรวจสอบรายการต่อไปนี้อย่างรวดเร็วอาจช่วยแก้ไขปัญหาได้

  1. คุณได้สร้างโปรเจ็กต์ในคอนโซล Google Cloud ไหม
  2. คุณได้เปิดใช้บริการในโปรเจ็กต์แล้วหรือยัง
  3. คุณได้ดาวน์โหลดไฟล์ .JSON ซึ่งเป็นคีย์ส่วนตัวหลังจากคลิกสร้างรหัสไคลเอ็นต์และเลือกบัญชีบริการใช่ไหม
  4. คุณได้รับอีเมลรหัสไคลเอ็นต์ของบัญชีบริการในรูปแบบ nnnnnnn@app_name.google.com.iam.gserviceaccount.com ไหม
  5. คุณได้แชร์บัญชีศูนย์ช่วยเหลือของ Google Hotel Ads กับบัญชีบริการโดยคลิกปุ่มแชร์บัญชีนี้ไหม
  6. คุณได้ส่งอีเมลและรหัสพาร์ทเนอร์ของบัญชีบริการไปยังผู้จัดการลูกค้าด้านเทคนิค (TAM) ไหม
  7. การเรียก API ของคุณมีการส่งผ่านโทเค็นที่เพิ่งได้รับในส่วนหัว Authorization ไหม
  8. โทเค็นมีอายุเกิน 1 ชั่วโมงไหม

ตารางต่อไปนี้แสดงข้อผิดพลาดที่พบบ่อยและวิธีแก้ปัญหาที่เป็นไปได้

ข้อผิดพลาด คำอธิบาย
Invalid credentials ปัญหานี้อาจเกิดขึ้นจากหลายสาเหตุ หากพบข้อผิดพลาดนี้ ให้ตรวจสอบดังนี้
  • คุณระบุส่วนหัว Authorization ด้วยโทเค็นสำหรับผู้ถือที่ถูกต้อง
  • โทเค็นสำหรับผู้ถือจะใช้งานได้ไม่เกิน 1 ชั่วโมง เนื่องจากโทเค็นจะใช้งานได้เป็นระยะเวลาเพียง 1 ชั่วโมง
  • คุณระบุชื่อพาร์ทเนอร์ที่ถูกต้อง (ด้วยพารามิเตอร์สตริงการค้นหา partner ) ค่านี้ต้องเป็นรหัสพาร์ทเนอร์ที่ไม่ซ้ำกัน ไม่ใช่ชื่อพาร์ทเนอร์ที่ปรากฏในศูนย์ช่วยเหลือของ Google Hotel Ads หากไม่ทราบรหัสพาร์ทเนอร์ โปรดติดต่อผู้จัดการลูกค้าด้านเทคนิค (TAM)
Not found ปลายทางของคุณอาจมีรูปแบบไม่ถูกต้อง ตรวจสอบว่าคุณได้ส่งคำขอ GET และ URL ของคำขอนั้นถูกต้อง (สอดคล้องกับไวยากรณ์ API ที่คุณพยายามเข้าถึง)
Invalid string value ปลายทางอย่างน้อย 1 ส่วนมีไวยากรณ์ที่ไม่ถูกต้อง ตัวอย่างเช่น คุณอาจสะกดส่วนใดส่วนหนึ่งของเส้นทางผิด ตรวจสอบว่าคุณใช้ขีดล่าง อักษรตัวพิมพ์ใหญ่ และคำที่ถูกต้องตลอดทั้งเส้นทาง
Unsupported output format ข้อผิดพลาดนี้มักเกิดขึ้นได้บ่อยเมื่อใช้ Reports API คุณต้องระบุ "alt=csv" ใน URL ของคำขอ GET Reports API ไม่รองรับ JSON
AccessTokenRefreshError/Invalid grant เมื่อเรียกใช้แอป ข้อผิดพลาดนี้อาจเกิดจากสาเหตุต่อไปนี้
  • อีเมลบัญชีบริการไม่ถูกต้อง ตรวจสอบบัญชีอีเมลในคอนโซล Google Cloud และดูว่าบัญชีดังกล่าวได้รับสิทธิ์ให้เข้าถึง API ของคุณแล้ว
  • อีเมลไม่ได้รับสิทธิ์เข้าถึง API ตรวจสอบว่าอีเมลได้รับสิทธิ์เข้าถึงข้อมูลโรงแรมของคุณที่แชร์ผ่าน Hotel Center หรือไม่
  • ไฟล์คีย์ไม่ถูกต้องสำหรับบัญชีบริการ ใช้คอนโซล Google Cloud เพื่อดาวน์โหลดใบรับรอง .JSON ใหม่และตรวจสอบว่าแอปชี้ไปยังใบรับรองที่ถูกต้อง
HotelAdsAPIConnection object has no attribute credentials เส้นทางไปยังไฟล์ .JSON ไม่ถูกต้องเมื่อเรียกใช้แอป
Invalid scope เมื่อเรียกใช้แอป ขอบเขต API ต้องเป็นค่าใดค่าหนึ่งต่อไปนี้
  • "https://www.googleapis.com/auth/travelpartner"
  • "https://www.googleapis.com/auth/travel-partner-price-upload"
Forbidden รหัสบัญชีที่คุณใช้เป็นรหัสที่ไม่ได้รับสิทธิ์เข้าถึง หากเป็นเจ้าของบัญชีย่อย คุณอาจเข้าถึงรหัสบัญชีระดับบนสุดหรือบัญชีรูทไม่ได้