Ủy quyền API

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:

  1. Tạo dự án mới trong Google Cloud Console

  2. Tạo tài khoản dịch vụ và thông tin xác thực của tài khoản đó

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

  1. Đăng nhập vào Gmail hoặc Tài khoản Google của bạn.

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

    fig1

  3. 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):

    fig2

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

  4. Nhấp vào nút Tạo để tạo dự án mới.

  5. Sử dụng trình đơn điều hướng để chọn API và dịch vụ > Trang tổng quan.

    hình 3

    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:

    fig4

Để 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ụ:

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

  2. Nhấp vào đường liên kết Thông tin xác thực trong API và dịch vụ.

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

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

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

  6. Chọn JSON cho loại khoá. Bạn phải sử dụng JSON.

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

  8. 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ụ:

  1. Trong một cửa sổ trình duyệt mới, hãy mở Hotel Center. fig7

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

    fig8

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

  4. Chọn mục Thông báo cho mọi người.

  5. Chọn Quản lý trong bộ lọc.

  6. Nhấp vào nút Mời.

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

  1. Chuyển đến chế độ xem Trang tổng quan của dự án.

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

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

  4. 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 đó.

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

  1. Đố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.

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

  1. Bạn có tạo dự án trong Google Cloud Console không?
  2. Bạn có bật dịch vụ này trong dự án của mình không?
  3. 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ụ?
  4. 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?
  5. 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?
  6. 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?
  7. 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?
  8. 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:
  • Bạn đã chỉ định tiêu đề Authorization có tiêu đề hợp lệ mã thông báo mang.
  • Mã thông báo mang tải chưa đến một giờ. Mã thông báo chỉ tốt trong một giờ.
  • Bạn đã chỉ định đúng tên đối tác (bằng tham số chuỗi truy vấn partner ). Giá trị là đối tác duy nhất của bạn Mã nhận dạng, không phải tên đối tác xuất hiện trong Trung tâm Quảng cáo khách sạn. Nếu không biết mã đối tác của bạn, hãy liên hệ với Giám đốc Quản lý Khách hàng về Kỹ thuật (TAM) của bạn.
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:
  • Địa chỉ email tài khoản dịch vụ của bạn không chính xác. Kiểm tra email trong Google Cloud Console và đảm bảo rằng bảng điều khiển đó được phép truy cập vào API của bạn.
  • Địa chỉ email không có quyền truy cập API. Kiểm tra xem email có quyền truy cập vào dữ liệu khách sạn được chia sẻ của bạn thông qua Hotel Center.
  • Tệp khoá không phải là tệp chính xác dành cho tài khoản dịch vụ. Sử dụng bảng điều khiển Google Cloud để tải .JSON mới xuống và đảm bảo ứng dụng của bạn đang trỏ tới đúng chứng chỉ.
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:
  • &quot;https://www.googleapis.com/auth/travelpartner&quot;
  • &quot;https://travelpartnerprices.googleapis.com&quot;
  • &quot;https://www.googleapis.com/auth/travel-partner-price-upload&quot;
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.