Tài liệu này cung cấp hướng dẫn từng bước để thiết lập OAuth2.0 trong khi truy cập vào các API khách sạn (chẳng hạn như Travel Partner API và Price) API Nguồn cấp dữ liệu. Tham khảo bài viết Sử dụng OAuth 2.0 để truy cập Google API để cấp quyền cho ứng dụng của bạn.
Thiết lập OAuth 2.0
OAuth 2.0 yêu cầu bạn xác định danh tính của chính mình bằng tài khoản dịch vụ liên kết với Tài khoản Google của bạn. Tài khoản dịch vụ sẽ gửi dữ liệu riêng tư của bạn khoá để đổi lấy mã truy cập OAuth 2.0. Sau đó, bạn có thể sử dụng mã thông báo này trong các lệnh gọi đến API khách sạn để nhận dữ liệu chỉ có thể đọc, chẳng hạn như giá, khách sạn và dữ liệu báo cáo chẩn đoán về nguồn cấp dữ liệu giá của khách sạn.
Mã truy cập có hiệu lực trong một giờ (3.600 giây).
Nếu trước đây bạn đã triển khai ClientLogin, thì phương pháp OAuth 2.0 cũng tương tự, với những điểm khác biệt sau:
- Ứng dụng của bạn sử dụng tài khoản dịch vụ của Google để truy cập API.
- Bạn truyền mã truy cập OAuth 2.0 vào tiêu đề HTTP
Authorization
khi gọi API.
Để thiết lập tài khoản của bạn để sử dụng OAuth 2.0 với một API khách sạn bất kỳ, hãy thực hiện các bước sau các bước:
Tạo tài khoản dịch vụ và thông tin xác thực của tài khoản đó
Cấp cho tài khoản dịch vụ của bạn quyền truy cập vào dữ liệu khách sạn của bạn
Mỗi bước được mô tả cụ thể trong phần tiếp theo.
Bước 1: Tạo một dự án mới trên bảng điều khiển Google Cloud
Bảng điều khiển Google Cloud dùng để quản lý và xem dữ liệu về lưu lượng truy cập, thông tin xác thực và thông tin thanh toán cho các API của Google mà dự án của bạn sử dụng.
Trong bảng điều khiển Google Cloud, dự án là một tập hợp các chế độ cài đặt, thông tin xác thực và siêu dữ liệu về ứng dụng mà bạn đang xử lý sử dụng API Nhà phát triển của Google và tài nguyên của Google Cloud.
Bảng điều khiển Google Cloud cũng được dùng để tạo thông tin xác thực API, kích hoạt các API, cũng như quản lý thông tin nhóm và thông tin thanh toán liên quan đến dự án của bạn.
Cách tạo dự án mới trên Google Cloud Console:
Đăng nhập vào Gmail hoặc Tài khoản Google của bạn.
Mở bảng điều khiển Google Cloud. Nếu đây là dự án đầu tiên của bạn, chế độ xem chính sẽ hiển thị TẠO DỰ ÁN nút:
Nhấp vào nút TẠO DỰ ÁN. bảng điều khiển Google Cloud hiển thị Hộp thoại New Project (Dự án mới):
Đặt tên dễ nhớ cho dự án trong trường nhập dữ liệu Tên dự án. Bên dưới trường này, bảng điều khiển Google Cloud sẽ tạo một dự án Mã nhận dạng cho bạn, đảm bảo rằng mã nhận dạng này là duy nhất trên mọi dự án. Ví dụ: nếu bạn nhập "Dự án mới của tôi", bảng điều khiển Google Cloud sẽ gán một mã nhận dạng như
my-new-project-266022
.Nhấp vào nút Tạo để tạo dự án mới.
Sử dụng trình đơn điều hướng để chọn API và dịch vụ > Trang tổng quan.
Hình ảnh sau đây hiển thị trình đơn điều hướng ở phía trên bên trái của bảng điều khiển Google Cloud. Khi đó, bạn sẽ thấy giao diện Trang tổng quan cho dự án:
Để biết thêm thông tin, hãy tham khảo bài viết Tạo và quản lý dự án.
Bước 2: Tạo tài khoản dịch vụ và tạo thông tin xác thực cho tài khoản đó
Tài khoản dịch vụ được sử dụng bởi các tương tác giữa các máy chủ, chẳng hạn như các hoạt động giữa ứng dụng web và dữ liệu khách sạn của bạn.
Cách tạo và định cấu hình tài khoản dịch vụ:
Trong chế độ xem chính của Bảng điều khiển API của Google, hãy nhấp vào Thông tin đăng nhập trong điều hướng bên trái. Bảng điều khiển Google Cloud hiện phần Thông tin xác thực chế độ xem.
Chế độ xem Thông tin xác thực cho thấy mã ứng dụng khách và thông tin xác thực cho dự án. Ứng dụng của bạn sử dụng Client-ID khi yêu cầu Mã truy cập OAuth 2.0. Các dự án mới chưa có ứng dụng hoặc thông tin đăng nhập nào chưa.
Nhấp vào đường liên kết Thông tin xác thực trong API và dịch vụ.
Nhấp vào nút Tạo thông tin xác thực rồi chọn Khoá tài khoản dịch vụ trong bộ lọc. Bạn sẽ thấy chế độ xem Tạo khoá tài khoản dịch vụ.
Trên bộ lọc Tài khoản dịch vụ, hãy chọn Tài khoản dịch vụ mới.
Nhập tên tài khoản dịch vụ và mã tài khoản dịch vụ.
Bạn có thể đặt tên bất kỳ, nhưng mã tài khoản phải là duy nhất trong tất cả các dự án. Bảng điều khiển Google Cloud sẽ tạo một mã tài khoản duy nhất cho bạn, dựa vào tên bạn đã nhập.
Chọn JSON cho loại khoá. Bạn phải sử dụng JSON.
Nhấp vào nút Tạo. Google Cloud Console sẽ tạo một cho dự án của bạn. Khoá riêng tư này được lưu vào khoá mặc định vị trí nơi trình duyệt của bạn lưu tệp đã tải xuống. Bạn phải tải tệp định dạng
.JSON
xuống.Bạn sử dụng khoá riêng tư trong các tập lệnh của mình hoặc các ứng dụng khác truy cập API của bạn.
Bảng điều khiển Google Cloud hiển thị thông báo "Đã tạo tài khoản dịch vụ" thông báo khi hoàn tất việc tạo khoá.
Nhấp vào nút OK. Bảng điều khiển Google Cloud đưa bạn trở lại Chế độ xem Thông tin xác thực. Để xác nhận các thông tin chi tiết về tài khoản dịch vụ và để xem tài khoản dịch vụ được liên kết với dự án của bạn, hãy nhấp vào Quản lý tài khoản dịch vụ trong chế độ xem này.
Tài khoản dịch vụ hiện có các thông tin xác thực sau được liên kết với nó:
- Mã ứng dụng khách: Giá trị nhận dạng duy nhất mà ứng dụng của bạn dùng khi yêu cầu mã truy cập OAuth 2.0.
- Địa chỉ email: Địa chỉ email được tạo cho tài khoản dịch vụ, trong biểu mẫu "account_name@account_name.google.com.iam.gserviceaccount.com".
- Vân tay số chứng chỉ: Mã của khoá riêng tư mà bạn đã tải xuống.
Để biết thêm thông tin, hãy tham khảo bài viết Sử dụng OAuth 2.0 cho ứng dụng từ máy chủ đến máy chủ.
Bước 3: Cấp cho tài khoản dịch vụ quyền truy cập vào dữ liệu của bạn trên Hotel Center
Bước cuối cùng là cung cấp tài khoản dịch vụ mới có quyền truy cập vào Hotel Center. Tài khoản dịch vụ được xác định theo địa chỉ email đã tạo mà bạn đã tạo ở bước trước. Bạn cung cấp quyền truy cập vào tài khoản này bằng cách sử dụng chế độ cài đặt cách chia sẻ trong Hotel Center.
Nếu bạn không có quyền truy cập thích hợp để thêm người dùng vào tài khoản, hãy liên hệ với Nhóm Google Hotels sử dụng biểu mẫu liên hệ với chúng tôi và yêu cầu thiết lập quyền sở hữu đối với tài khoản của bạn. Bạn có thể yêu cầu gửi một hoặc nhiều email cho chủ sở hữu. Để biết thêm thông tin về quyền truy cập vào Hotel Center, hãy tham khảo bài viết Liên kết Hotel Center với Google Ads.
Cách cấp quyền truy cập vào dữ liệu của bạn trên Hotel Center cho tài khoản dịch vụ:
Trong một cửa sổ trình duyệt mới, hãy mở Hotel Center.
Trên biểu ngữ Hotel Center của Google, hãy nhấp vào biểu tượng thêm người dùng để mở hộp thoại chia sẻ.
Trong trường Thêm người khác, hãy nhập địa chỉ email của dịch vụ tài khoản mà bạn muốn thêm vào Hotel Center.
Chọn mục Thông báo cho mọi người.
Chọn Quản lý trong bộ lọc.
Nhấp vào nút Mời.
Sau khi thêm người dùng vào Hotel Center, bạn phải bật tài khoản dịch vụ để truy cập API trong vòng 24 giờ.
Sau khi Google thông báo cho bạn rằng quyền truy cập vào API đã được bật cho dịch vụ của bạn tài khoản, bạn có thể bắt đầu truy cập API bằng OAuth 2.0.
Cách sử dụng OAuth 2.0
Để truy cập API, ứng dụng của bạn phải xác định danh tính với Google bằng địa chỉ email và khoá riêng tư đã tạo của tài khoản dịch vụ.
cơ chế xác thực sẽ trao đổi khoá này để lấy mã truy cập OAuth 2.0
mà bạn truyền tiêu đề Authorization
vào các lệnh gọi API của ứng dụng.
Hãy tham khảo bài viết Chuẩn bị để thực hiện lệnh gọi API được uỷ quyền.
Phạm vi
Sau đây là SCOPES
cho API Khách sạn:
API Travel Partner: "https://www.googleapis.com/auth/travelpartner"
Travel Partner Prices API: "https://travelpartnerprices.googleapis.com"
API Nguồn cấp dữ liệu giá: "https://www.googleapis.com/auth/travel-partner-price-upload"
Bạn nên chỉ định tài khoản dịch vụ khi tạo thông tin xác thực. Tham khảo Tạo tài khoản dịch vụ và tạo thông tin xác thực cho tài khoản đó.
Khi phát triển ứng dụng, hãy nhớ làm theo các phương pháp hay nhất để xác thực ứng dụng bằng khoá API. Tìm hiểu thêm.
Ví dụ:
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 Travel Partner
Travel Partner API giúp các đối tác lưu trú truy xuất Hotel Center thông tin và thay đổi dữ liệu của Hotel Center để quản lý các tài khoản lớn hoặc phức tạp.
Làm theo hướng dẫn thiết lập OAUTH 2.0 để được uỷ quyền cho Travel Partner API của bạn.
Khi tạo một dự án mới cho Travel Partners API, bạn cần cấp quyền truy cập đối với dự án mới trên bảng điều khiển Google Cloud.
Làm theo các bước để bật quyền truy cập vào Travel Partners API:
Chuyển đến chế độ xem Trang tổng quan của dự án.
Nhấp vào Bật API và dịch vụ. Thao tác này sẽ hiện nội dung chào mừng bạn đến với Thư viện API .
Trong trường tìm kiếm, hãy nhập "Travel Partner API" rồi nhập bảng điều khiển sẽ hiện danh sách API khớp với nội dung bạn nhập.
Nhấp vào API phù hợp trong bảng. Bảng điều khiển Google Cloud hiển thị một mô tả về API đó.
Nhấp vào nút Enable API (Bật API) để bật API này cho dự án của bạn.
Để biết thêm thông tin, hãy xem phần Bật và tắt dịch vụ.
Travel Partner API hiện đã được bật cho dự án mới trong Tài khoản Google của bạn.
Phạm vi của Travel Partner API là:
"https://www.googleapis.com/auth/travelpartner"
Điểm cuối của Travel Partner API là:
"https://travelpartner.googleapis.com/v3/accounts/<account_id>/<path>"
API giá của đối tác du lịch
Travel Partner Price API cho phép các đối tác lưu trú gửi giá của cơ sở lưu trú đến Google. Đây còn được gọi là Giá theo thời gian lưu trú (LoS).
Làm theo hướng dẫn thiết lập OAUTH 2.0 để được uỷ quyền cho Travel Partner Price API của bạn.
Khi tạo một dự án mới cho Travel Partners Price API, bạn cần cho phép truy cập vào dự án mới trên bảng điều khiển Google Cloud, tương tự như hướng dẫn được cung cấp trong Travel Partner API.
Hãy tham khảo các bước được cung cấp trong Travel Partner API và các bước thay thế tất cả bản sao của "Travel Partner API" với "Travel Partner Price API" (API Giá của đối tác đi lại) để bật dự án của bạn.
Phạm vi của Travel Partner Price API là:
"https://travelpartnerprices.googleapis.com"
Đường dẫn tải lên cho Travel Partner Price API là:
"/travel/lodging/uploads/accounts/<account_id>/property_data"
API Nguồn cấp dữ liệu giá
API Nguồn cấp dữ liệu giá giúp các đối tác cơ sở lưu trú cung cấp dữ liệu về giá tuỳ chỉnh cho mọi khách sạn. Đối tác lưu trú của Google có thể sử dụng OAuth2.0 để xác thực và tự cấp quyền khi tải giá lên Google. Làm theo hướng dẫn thiết lập OAUTH 2.0 để được uỷ quyền cho API Nguồn cấp dữ liệu giá.
Các điểm cần nhớ
Xin lưu ý những khác biệt quan trọng trong hướng dẫn uỷ quyền cho Nguồn cấp dữ liệu giá API.
Đối tác nên tạo một dự án OAuth2.0 mới cho nguồn cấp dữ liệu giá trong bảng điều khiển Google Cloud bằng cách làm theo hướng dẫn tương tự như trong phần thiết lập OAuth 2.0.
Bạn KHÔNG cần bật API Nguồn cấp dữ liệu giá trong bảng điều khiển Google Cloud và có thể bỏ qua. Bạn chỉ cần một tài khoản dịch vụ và rồi dùng cùng một tài khoản dịch vụ & khoá để cấp cho dự án Nguồn cấp dữ liệu giá quyền truy cập vào Khách sạn của bạn Đặt dữ liệu ở trung tâm. Làm theo các bước còn lại được đề cập trong quá trình thiết lập OAuth2.0 để hoàn tất việc định cấu hình API của bạn.
Nhận mã truy cập OAuth2.0 cho Nguồn cấp dữ liệu giá
Bước tiếp theo là lấy mã truy cập OAuth2.0 cùng với tính năng tải giá lưu trú lên
bằng cách sử dụng tệp khoá tài khoản dịch vụ. Bạn có thể uỷ quyền cho các yêu cầu để
Dự án Nguồn cấp dữ liệu giá bằng cách làm theo hướng dẫn trong
Chuẩn bị thực hiện lệnh gọi API được uỷ quyền
rồi trích xuất mã truy cập từ thông tin xác thực đã thu được và đặt mã đó vào
tiêu đề HTTP "Authorization"
.
Phạm vi tải giá lưu trú lên là:
"https://www.googleapis.com/auth/travel-partner-price-upload"
Tải giá lên
Sau khi có mã truy cập, đối tác có thể tải nguồn cấp dữ liệu giá tương tự như sử dụng IP tĩnh để xác thực và uỷ quyền với sửa đổi:
- Đặt mã truy cập trong tiêu đề 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>
Kiểm tra chế độ thiết lập OAuth2.0 cho API nguồn cấp dữ liệu giá
Bạn có thể kiểm tra chế độ thiết lập OAuth2.0 bằng cách tải tệp trống lên hoặc cung cấp giá thực vào bất kỳ đường dẫn tải lên nào. Sử dụng bảng để kiểm tra phản hồi HTTP của bạn trạng thái.
Trạng thái phản hồi HTTP | Thông điệp |
---|---|
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 |
Khắc phục sự cố
Bạn gặp sự cố? Việc kiểm tra nhanh các mục sau đây có thể giải quyết được sự cố.
- Bạn có tạo dự án trong Google Cloud Console không?
- Bạn có bật dịch vụ này trong dự án của mình không?
- Bạn đã tải tệp
.JSON
xuống chưa—khoá riêng tư sau khi nhấp vào Tạo mã ứng dụng khách rồi chọn Tài khoản dịch vụ? - Bạn có nhận được địa chỉ email có mã ứng dụng khách của tài khoản dịch vụ theo một biểu mẫu không:
nnnnnnn@app_name.google.com.iam.gserviceaccount.com
? - Bạn đã chia sẻ tài khoản Trung tâm Quảng cáo khách sạn với tài khoản dịch vụ bằng cách nhấp vào nút Chia sẻ tài khoản này chưa?
- Bạn đã gửi địa chỉ email của tài khoản dịch vụ và mã đối tác của mình đến Giám đốc Quản lý Khách hàng về Kỹ thuật (TAM) chưa?
- Các lệnh gọi API của bạn có chuyển mã thông báo nhận được gần đây trong phần tử
Tiêu đề
Authorization
? - Mã thông báo của bạn đã tồn tại hơn 1 giờ chưa?
Bảng sau đây liệt kê một số lỗi phổ biến và những giải pháp có thể áp dụng:
Lỗi | Mô tả |
---|---|
Invalid credentials | Điều này có thể có nhiều ý nghĩa. Nếu gặp phải lỗi này,
hãy kiểm tra để đảm bảo:
|
Not found | Rất có thể điểm cuối của bạn không đúng định dạng. Kiểm tra để đảm bảo rằng bạn đang gửi
yêu cầu GET và URL yêu cầu là hợp lệ (URL này tuân thủ
vào cú pháp API mà bạn đang cố gắng truy cập). |
Invalid string value | Một hoặc nhiều phần của điểm cuối chứa cú pháp không hợp lệ. Ví dụ: bạn có thể đã viết sai chính tả một phần của đường dẫn. Kiểm tra xem bạn đã sử dụng đúng dấu gạch dưới, cách viết hoa và từ ngữ trong toàn bộ đường dẫn của bạn. |
Unsupported output format | Lỗi này thường xảy ra nhất khi sử dụng API Báo cáo. Bạn phải
chỉ định "alt=csv" trong URL của GET
yêu cầu. API Báo cáo không hỗ trợ JSON. |
AccessTokenRefreshError/Invalid grant | Trong quá trình chạy ứng dụng, lỗi này có thể là do
sau:
|
HotelAdsAPIConnection object has no attribute credentials | Khi chạy ứng dụng, đường dẫn đến tệp .JSON là
không chính xác. |
Invalid scope | Khi chạy ứng dụng, phạm vi API của bạn phải là một trong những phạm vi sau:
|
Forbidden | Mã tài khoản mà bạn sử dụng chưa được bạn uỷ quyền để truy cập. Nếu là chủ sở hữu tài khoản phụ, bạn có thể không truy cập được mã tài khoản gốc hoặc mã tài khoản gốc. |