Sử dụng OAuth

API Tối ưu hoá tuyến đường hỗ trợ việc sử dụng OAuth 2.0 để xác thực. Google hỗ trợ các trường hợp OAuth 2.0 phổ biến chẳng hạn như các trường hợp đối với máy chủ web.

Tài liệu này mô tả cách chuyển mã thông báo OAuth tới lệnh gọi API Tối ưu hoá tuyến đường trong phát triển. Để xem hướng dẫn về cách sử dụng OAuth trong môi trường chính thức, hãy xem Xác thực tại Google.

Trước khi bắt đầu

Trước khi bắt đầu sử dụng API Tối ưu hoá tuyến đường, bạn cần có dự án có tài khoản thanh toán và API Tối ưu hóa tuyến đường được bật. Bạn nên tạo nhiều Chủ dự án và Quản trị viên thanh toán để bạn luôn có người đảm nhận các vai trò này có sẵn cho nhóm của bạn. Để tìm hiểu thêm, hãy xem phần Thiết lập trong Cloud Console.

Giới thiệu về OAuth

Có nhiều cách để tạo và quản lý mã truy cập bằng OAuth dựa vào quá trình triển khai của bạn môi trường.

Ví dụ: hệ thống Google OAuth 2.0 hỗ trợ các hoạt động tương tác giữa các máy chủ, chẳng hạn như giữa ứng dụng của bạn và dịch vụ của Google. Trong trường hợp này, bạn cần có một tài khoản dịch vụ là tài khoản thuộc về ứng dụng của bạn chứ không phải của một người dùng cuối cá nhân. Thông tin ứng dụng gọi API của Google thay cho tài khoản dịch vụ, do đó người dùng không tham gia trực tiếp. Để biết thêm thông tin về các phương pháp xác thực, hãy xem Xác thực tại Google.

Ngoài ra, bạn có thể sử dụng API Tối ưu hoá tuyến đường như một phần của ứng dụng dành cho thiết bị di động Android hoặc iOS. Để biết thông tin chung về cách sử dụng OAuth bằng API Tối ưu hoá tuyến đường, bao gồm cả thông tin về cách quản lý mã truy cập cho các môi trường triển khai khác nhau, hãy xem Sử dụng OAuth 2.0 để truy cập Google API.

Giới thiệu về phạm vi của OAuth

Để sử dụng OAuth với API Tối ưu hoá tuyến đường, bạn phải chỉ định mã thông báo OAuth cho phạm vi:

  • https://www.googleapis.com/auth/cloud-platform

Ví dụ: Thử lệnh gọi API REST trong môi trường phát triển cục bộ

Nếu bạn muốn thử API Tối ưu hoá tuyến đường bằng mã thông báo OAuth nhưng không có môi trường thiết lập để tạo mã thông báo, bạn có thể sử dụng quy trình trong phần này để thực hiện lệnh gọi.

Ví dụ này mô tả cách sử dụng mã thông báo OAuth do Thông tin đăng nhập mặc định của ứng dụng (ADC) để thực hiện cuộc gọi. Để biết thông tin về cách sử dụng ADC để gọi API của Google bằng thư viện ứng dụng, hãy xem Xác thực bằng thư viện ứng dụng.

Điều kiện tiên quyết

Trước khi có thể tạo yêu cầu REST bằng ADC, hãy sử dụng Google Cloud CLI để cung cấp thông tin xác thực cho ADC:

  1. Tạo một dự án và bật tính năng thanh toán bằng cách làm theo các bước trong Thiết lập trong Google Cloud Console.
  2. Cài đặt và khởi chạy gcloud CLI.
  3. Chạy lệnh gcloud sau trên máy cục bộ của bạn để tạo tệp thông tin xác thực:

    gcloud auth application-default login
  4. Màn hình đăng nhập sẽ hiển thị. Sau khi bạn đăng nhập, thông tin đăng nhập của bạn được lưu trữ trong tệp thông tin xác thực cục bộ mà ADC sử dụng.

Để biết thêm thông tin, hãy xem Môi trường phát triển cục bộ của Cung cấp thông tin đăng nhập cho Thông tin đăng nhập mặc định của ứng dụng tài liệu.

Tạo yêu cầu REST

Trong ví dụ này, bạn truyền 2 tiêu đề của yêu cầu:

  • Truyền mã thông báo OAuth vào tiêu đề Authorization bằng cách sử dụng đoạn mã sau để tạo mã thông báo:

    gcloud auth application-default print-access-token

    Mã thông báo được trả về có phạm vi là https://www.googleapis.com/auth/cloud-platform.

  • Chỉ định loại nội dung cho nội dung yêu cầu là application/json.

Ví dụ sau đây thực hiện lệnh gọi đến Route Optimization API (API Tối ưu hoá tuyến đường) bằng mã thông báo OAuth:

curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
--data-binary @- << EOM
{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.73881799999999,
              "longitude": -122.4161
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.79581,
              "longitude": -122.4218856
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "endLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        }
      }
    ],
    "globalStartTime": "2023-01-13T16:00:00-08:00",
    "globalEndTime": "2023-01-14T16:00:00-08:00"
  }
}
EOM

Khắc phục sự cố

Nếu yêu cầu của bạn trả về một thông báo lỗi cho biết thông tin đăng nhập của người dùng cuối không được API này hỗ trợ, hãy xem phần Thông tin xác thực người dùng không hoạt động.