เอกสารนี้จะอธิบายวิธีการตั้งค่า OAuth2.0 ในแอปพลิเคชันของคุณแบบทีละขั้นตอนเมื่อเข้าถึง API ของโรงแรม เช่น Travel Partner API และ Price Feeds 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 ใหม่
Google Cloud Console ใช้สำหรับการจัดการและดูข้อมูลการเข้าชม การตรวจสอบสิทธิ์ และข้อมูลการเรียกเก็บเงินสำหรับ Google APIs ที่โปรเจ็กต์ของคุณใช้
ใน Google Cloud Console โปรเจ็กต์คือชุดการตั้งค่า ข้อมูลเข้าสู่ระบบ และข้อมูลเมตาเกี่ยวกับแอปพลิเคชันที่คุณกำลังพัฒนาอยู่ซึ่งใช้ Google Developer API และทรัพยากร Google Cloud
นอกจากนี้ยังใช้คอนโซล Google Cloud ในการสร้างข้อมูลเข้าสู่ระบบ API, การเปิดใช้งาน API รวมถึงการจัดการทีมและข้อมูลสำหรับการเรียกเก็บเงินที่เชื่อมโยงกับโปรเจ็กต์ของคุณได้ด้วย
วิธีสร้างโปรเจ็กต์คอนโซล Google Cloud ใหม่
ลงชื่อเข้าใช้บัญชี Gmail หรือ Google
เปิด Google Cloud Console หากนี่เป็นโปรเจ็กต์แรกของคุณ มุมมองหลักจะแสดงปุ่มสร้างโปรเจ็กต์
คลิกปุ่มสร้างโปรเจ็กต์ คอนโซล Google Cloud จะแสดงกล่องโต้ตอบโปรเจ็กต์ใหม่ ดังนี้
ป้อนชื่อที่เหมาะสมกับโปรเจ็กต์ใหม่ในช่องป้อนข้อมูลชื่อโปรเจ็กต์ โดยคอนโซล Google Cloud จะสร้างรหัสโปรเจ็กต์ไว้ที่ด้านล่างของช่องดังกล่าวเพื่อให้แน่ใจว่ารหัสนั้นไม่ซ้ำกับโปรเจ็กต์อื่นๆ เช่น หากคุณป้อน "My New Project" คอนโซล Google Cloud จะกำหนดรหัสเป็น
my-new-project-266022คลิกปุ่มสร้างเพื่อสร้างโปรเจ็กต์ใหม่
ใช้เมนูการนำทางเพื่อเลือก API และบริการ > แดชบอร์ด
รูปภาพต่อไปนี้แสดงเมนูการนำทางที่ด้านบนซ้ายของ Google Cloud Console โดยเมนูนี้จะแสดงมุมมองแดชบอร์ดสำหรับโปรเจ็กต์ของคุณ ดังนี้
ดูข้อมูลเพิ่มเติมได้ที่การสร้างและจัดการโปรเจ็กต์
ขั้นตอนที่ 2: สร้างบัญชีบริการและสร้างข้อมูลเข้าสู่ระบบของบัญชีดังกล่าว
บัญชีบริการมีไว้สำหรับการโต้ตอบระหว่างเซิร์ฟเวอร์ เช่น การโต้ตอบระหว่างเว็บแอปพลิเคชันกับข้อมูลโรงแรมของคุณ
วิธีสร้างและกำหนดค่าบัญชีบริการมีดังนี้
ในมุมมองหลักของคอนโซล Google API ให้คลิกข้อมูลเข้าสู่ระบบที่การนำทางด้านซ้าย คอนโซล Google Cloud จะแสดงมุมมองข้อมูลเข้าสู่ระบบ
มุมมองข้อมูลเข้าสู่ระบบจะแสดงรหัสไคลเอ็นต์และข้อมูลเข้าสู่ระบบสำหรับโปรเจ็กต์ของคุณ แอปพลิเคชันจะใช้รหัสไคลเอ็นต์เมื่อขอโทเค็นเพื่อการเข้าถึง OAuth 2.0 โปรเจ็กต์ใหม่จะยังไม่มีไคลเอ็นต์หรือข้อมูลเข้าสู่ระบบ
คลิกลิงก์ข้อมูลเข้าสู่ระบบใน API และบริการ
คลิกปุ่มสร้างข้อมูลเข้าสู่ระบบ แล้วเลือกคีย์ของบัญชีบริการ จากตัวกรอง มุมมองสร้างคีย์ของบัญชีบริการจะปรากฏขึ้น
จากตัวกรองบัญชีบริการ ให้เลือกบัญชีบริการใหม่
ป้อนชื่อและรหัสบัญชีบริการ
คุณจะตั้งชื่อบัญชีได้ตามต้องการ แต่รหัสบัญชีต้องไม่ซ้ำกับโปรเจ็กต์อื่นๆ คอนโซล Google Cloud จะสร้างรหัสบัญชีที่ไม่ซ้ำกันสำหรับคุณโดยอิงตามชื่อที่ป้อน
เลือก JSON สำหรับประเภทคีย์ ต้องใช้ JSON
คลิกที่ปุ่มสร้าง Google Cloud Console จะสร้างคู่คีย์ส่วนตัวหรือสาธารณะสำหรับโปรเจ็กต์ของคุณ ระบบจะบันทึกคีย์ส่วนตัวไปยังตำแหน่งเริ่มต้นที่เบราว์เซอร์ของคุณจัดเก็บการดาวน์โหลดไว้ คุณต้องดาวน์โหลดไฟล์ใน
.JSONรูปแบบคุณใช้คีย์ส่วนตัวในสคริปต์หรือแอปพลิเคชันอื่นๆ ที่เข้าถึง API ของคุณได้
คอนโซล Google Cloud จะแสดงข้อความ "สร้างบัญชีบริการแล้ว" เมื่อสร้างคีย์เสร็จสมบูรณ์
คลิกปุ่มรับทราบ 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 Hotels โดยใช้แบบฟอร์มติดต่อเราและขอตั้งค่าความเป็นเจ้าของสำหรับบัญชีของคุณ คุณขอเป็นเจ้าของอีเมลได้อย่างน้อย 1 รายการ ดูข้อมูลเพิ่มเติมเกี่ยวกับการเข้าถึง Hotel Center ได้ที่ลิงก์ Hotel Center กับ Google Ads
วิธีให้สิทธิ์เข้าถึงข้อมูล Hotel Center แก่บัญชีบริการมีดังนี้
เปิดศูนย์โรงแรมในหน้าต่างเบราว์เซอร์ใหม่
คลิกไอคอนเพิ่มผู้ใช้ในแบนเนอร์ Hotel Center โดย Google เพื่อเปิด กล่องโต้ตอบการแชร์
ในช่องเพิ่มบุคคลอื่น ให้ป้อนอีเมลของบัญชีบริการ ที่คุณต้องการเพิ่มลงใน Hotel Center
เลือกตัวเลือกแจ้งเตือนบุคคลอื่น
เลือกจัดการจากตัวกรอง
คลิกปุ่มเชิญ
หลังจากเพิ่มผู้ใช้ใน 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"
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 Console ใหม่
ทำตามขั้นตอนต่อไปนี้เพื่อเปิดใช้สิทธิ์เข้าถึง Travel Partners API
ไปที่มุมมองแดชบอร์ดของโปรเจ็กต์
คลิกเปิดใช้ API และบริการ การดำเนินการนี้จะแสดงหน้ายินดีต้อนรับของไลบรารี API
พิมพ์ "Travel Partner API" ในช่องค้นหา จากนั้นคอนโซลจะแสดงรายการ API ที่ตรงกับสิ่งที่คุณพิมพ์
คลิก API ที่ตรงกันในตาราง Google Cloud Console จะแสดง คำอธิบายเกี่ยวกับ API นั้น
คลิกปุ่มเปิดใช้ 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 Feeds API
พาร์ทเนอร์ควรสร้างโปรเจ็กต์ OAuth2.0 ฟีดราคาใหม่ ในคอนโซล Google Cloud โดยใช้คำสั่งเดียวกันกับที่ระบุไว้ในการตั้งค่า OAuth 2.0
ไม่จำเป็นต้องเปิดใช้ Price Feeds API ใน Google Cloud Console และคุณสามารถข้ามขั้นตอนนี้ได้ คุณต้องมีบัญชีบริการและคีย์เพียง 1 รายการ จากนั้นใช้บัญชีบริการและคีย์เดียวกันเพื่อให้สิทธิ์เข้าถึงโปรเจ็กต์ฟีดราคาแก่ข้อมูล Hotel Center ทำตามขั้นตอนที่เหลือที่ระบุไว้ในการตั้งค่า OAuth2.0 เพื่อ กำหนดค่า API ให้เสร็จสมบูรณ์
รับโทเค็นเพื่อการเข้าถึง OAuth2.0 สำหรับฟีดราคา
ขั้นตอนถัดไปคือการรับโทเค็นเพื่อการเข้าถึง OAuth 2.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 |
การแก้ปัญหา
หากพบปัญหา การตรวจสอบรายการต่อไปนี้อย่างรวดเร็วอาจช่วยแก้ไขปัญหาได้
- คุณได้สร้างโปรเจ็กต์ใน Google Cloud Console ไหม
- คุณเปิดใช้บริการในโปรเจ็กต์แล้วใช่ไหม
- คุณได้ดาวน์โหลดไฟล์
.JSONซึ่งเป็นคีย์ส่วนตัวหลังจากคลิกสร้างรหัสไคลเอ็นต์และเลือกบัญชีบริการไหม - คุณได้รับอีเมลรหัสไคลเอ็นต์ของบัญชีบริการในรูปแบบ
nnnnnnn@app_name.google.com.iam.gserviceaccount.comไหม - คุณได้แชร์บัญชีศูนย์ช่วยเหลือของ Google Hotel Ads กับบัญชีบริการโดยคลิกปุ่มแชร์บัญชีนี้ไหม
- คุณได้ส่งอีเมลและรหัสพาร์ทเนอร์ของบัญชีบริการไปยังผู้จัดการลูกค้าด้านเทคนิค (TAM) ไหม
- การเรียก API ของคุณมีการส่งโทเค็นที่เพิ่งได้รับในส่วนหัว
Authorizationไหม - โทเค็นของคุณมีการใช้งานเกิน 1 ชั่วโมงไหม
ตารางต่อไปนี้แสดงข้อผิดพลาดที่พบบ่อยและวิธีแก้ปัญหาที่เป็นไปได้
| ข้อผิดพลาด | คำอธิบาย |
|---|---|
| Invalid credentials | ปัญหานี้อาจเกิดขึ้นจากหลายสาเหตุ หากพบข้อผิดพลาดนี้ ให้ตรวจสอบสิ่งต่อไปนี้
|
| Not found | ปลายทางของคุณอาจมีรูปแบบไม่ถูกต้อง ตรวจสอบว่าคุณได้ส่งGETคำขอ และ URL ของคำขอนั้นถูกต้อง (สอดคล้องกับไวยากรณ์ API ที่คุณพยายามเข้าถึง) |
| Invalid string value | ปลายทางอย่างน้อย 1 ส่วนมีไวยากรณ์ที่ไม่ถูกต้อง ตัวอย่างเช่น คุณอาจสะกดส่วนใดส่วนหนึ่งของเส้นทางผิด ตรวจสอบว่าคุณใช้ขีดล่าง อักษรตัวพิมพ์ใหญ่ และคำที่ถูกต้องตลอดทั้งเส้นทาง |
| Unsupported output format | ข้อผิดพลาดนี้มักเกิดขึ้นได้บ่อยเมื่อใช้ Reports API คุณต้อง
ระบุ "alt=csv" ใน URL ของคำขอ GET
Reports API ไม่รองรับ JSON |
| AccessTokenRefreshError/Invalid grant | เมื่อเรียกใช้แอป ข้อผิดพลาดนี้อาจเกิดจากสาเหตุต่อไปนี้
|
| HotelAdsAPIConnection object has no attribute credentials | เส้นทางไปยังไฟล์ .JSON ไม่ถูกต้องเมื่อเรียกใช้แอป
|
| Invalid scope | เมื่อเรียกใช้แอป ขอบเขต API ต้องเป็นหนึ่งในรายการต่อไปนี้
|
| Forbidden | รหัสบัญชีที่คุณใช้เป็นรหัสที่ไม่ได้รับสิทธิ์ เข้าถึง หากเป็นเจ้าของบัญชีย่อย คุณอาจเข้าถึงรหัสบัญชีหลักหรือบัญชีรูทไม่ได้ |