Sử dụng OAuth

Places API (Mới) hỗ trợ việc sử dụng OAuth 2.0 để xác thực. Google hỗ trợ các tình huống phổ biến của OAuth 2.0 chẳng hạn như các tình huống cho máy chủ web.

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

Trước khi bắt đầu

Trước khi bắt đầu sử dụng Places API (Mới), bạn cần có một dự án có tài khoản thanh toán và bật Places API (Mới). Bạn nên tạo nhiều Chủ sở hữu dự án và Quản trị viên thanh toán để nhóm của bạn luôn có người có các vai trò này. Để 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 trên môi trường triển khai của bạn.

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ư các hoạt động tương tác giữa ứng dụng của bạn và một dịch vụ của Google. Trong trường hợp này, bạn cần có tài khoản dịch vụ. Đây là tài khoản thuộc về ứng dụng của bạn thay vì thuộc về người dùng cuối cá nhân. Ứng dụng của bạn gọi các API của Google thay mặt cho tài khoản dịch vụ, do đó, người dùng sẽ không trực tiếp tham gia. Để biết thêm thông tin về các phương thức xác thực, hãy xem bài viết Xác thực tại Google.

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

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

Để sử dụng OAuth với Places API (Mới), bạn phải chỉ định phạm vi cho mã thông báo OAuth:

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

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

Nếu muốn dùng thử Places API (Mới) bằng mã thông báo OAuth, nhưng chưa thiết lập môi trường để tạo mã thông báo, thì bạn có thể làm theo 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 xác thực mặc định của ứng dụng (ADC) cung cấp để thực hiện lệnh gọi. Để biết thông tin về cách sử dụng ADC để gọi API Google bằng thư viện ứng dụng, hãy xem bài viết Xác thực bằng thư viện ứng dụng.

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

Trước khi bạn 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. Hãy 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 phần Thiết lập trong Google Cloud Console nếu bạn chưa tạo.
  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ộ để 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 xác thực 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 phần Môi trường phát triển cục bộ trong tài liệu Cung cấp thông tin xác thực cho Thông tin xác thực mặc định của ứng dụng.

Tạo yêu cầu REST

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

  • Chuyển mã thông báo OAuth vào tiêu đề Authorization bằng cách dùng lệnh 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.

  • Chuyển mã hoặc tên của dự án Google Cloud đã bật tính năng thanh toán trong tiêu đề X-Goog-User-Project. Để tìm hiểu thêm, hãy xem phần Thiết lập trong Cloud Console.

Ví dụ sau đây thực hiện một lệnh gọi đến Places API (Mới) bằng mã thông báo OAuth:

curl -X POST -d '{
  "textQuery" : "Spicy Vegetarian Food in Sydney, Australia"
}' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "X-Goog-User-Project: PROJECT_ID" \
-H "X-Goog-FieldMask: places.displayName,places.formattedAddress" \
"https://places.googleapis.com/v1/places:searchText"

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 về việc API này không hỗ trợ thông tin xác thực của người dùng cuối, hãy xem phần Thông tin đăng nhập của người dùng không hoạt động.