Dùng khóa API

Các sản phẩm trên Nền tảng Google Maps được bảo vệ khỏi việc sử dụng trái phép bằng cách chỉ cho phép các lệnh gọi API cung cấp thông tin xác thực phù hợp. Các thông tin xác thực này có dạng khoá API – một chuỗi chữ và số duy nhất liên kết tài khoản thanh toán trên Google với dự án của bạn, cũng như với API hoặc SDK cụ thể đó.

Hướng dẫn này trình bày cách tạo, hạn chế và sử dụng Khoá API cho Nền tảng Google Maps.

Trước khi bắt đầu

Trước khi bắt đầu sử dụng API JavaScript của Maps, bạn cần một dự án có tài khoản thanh toán và bật API JavaScript của Maps. Để tìm hiểu thêm, hãy xem bài viết Thiết lập trong Cloud Console.

Tạo khoá API

Khoá API là giá trị nhận dạng duy nhất giúp xác thực các yêu cầu liên kết với dự án của bạn cho mục đích sử dụng và thanh toán. Bạn phải có ít nhất một khoá API liên kết với dự án của mình.

Cách tạo khoá API:

Bảng điều khiển

  1. Chuyển đến trang Nền tảng Google Maps > Thông tin xác thực.

    Chuyển đến trang Thông tin xác thực

  2. Trên trang Thông tin xác thực, hãy nhấp vào Tạo thông tin xác thực > Khoá API.
    Hộp thoại API key created (Đã tạo khoá API) hiển thị khoá API mới tạo.
  3. Nhấp vào Đóng.
    Khoá API mới được liệt kê trên trang Thông tin xác thực trong phần Khoá API.
    (Hãy nhớ hạn chế khoá API trước khi dùng khoá này trong quá trình phát hành chính thức.)

SDK đám mây

gcloud alpha services api-keys create \
    --project "PROJECT" \
    --display-name "DISPLAY_NAME"

Đọc thêm về SDK Google Cloud , cài đặt SDK đám mây và các lệnh sau:

Hạn chế khoá API

Bạn nên hạn chế khoá API bằng cách chỉ sử dụng các khoá API cần thiết cho ứng dụng. Việc hạn chế khoá API giúp tăng cường tính bảo mật cho ứng dụng của bạn bằng cách bảo vệ ứng dụng khỏi các yêu cầu không phù hợp. Để biết thêm thông tin, hãy xem bài viết Các phương pháp hay nhất về bảo mật API.

Cách hạn chế khoá API:

Bảng điều khiển

  1. Chuyển đến trang Nền tảng Google Maps > Thông tin xác thực.

    Chuyển đến trang Thông tin xác thực

  2. Chọn khoá API mà bạn muốn đặt hạn chế. Trang thuộc tính khoá API sẽ xuất hiện.
  3. Trong mục Khóa hạn chế, hãy đặt các hạn chế sau:
    • Hạn chế áp dụng:
      1. Để chấp nhận các yêu cầu từ danh sách trang web mà bạn cung cấp, hãy chọn Mã tham chiếu HTTP (trang web) trong danh sách Hạn chế đối với ứng dụng.
      2. Hãy chỉ định một hoặc nhiều trang web giới thiệu. Bạn có thể dùng các ký tự đại diện để uỷ quyền cho tất cả miền con (ví dụ: https://*.google.com sẽ chấp nhận mọi trang web có đuôi là .google.com khi được truy cập qua HTTPS). Xin lưu ý rằng nếu bạn chỉ định www.domain.com, tên miền sẽ hoạt động như một ký tự đại diện www.domain.com/* và uỷ quyền mọi đường dẫn con trên tên máy chủ đó. Chỉ định giao thức giới thiệu https://http:// theo nguyên trạng. Đối với các giao thức URL khác, bạn phải sử dụng cách biểu diễn đặc biệt. Ví dụ: định dạng file:///path/to/__file_url__//path/to/*. Sau khi kích hoạt các trang web, hãy nhớ theo dõi mức sử dụng của bạn để đảm bảo mức sử dụng phù hợp với kỳ vọng của bạn. Bạn có thể sử dụng các giao thức sau: about://, app://, applewebdata://, asset://, chrome://, content://, file://, ftp://, ionic://, local://, ms-appx://, ms-appx-web://, ms-local-stream://, prism://, qrc://, res://, saphtmlp://.
    • Các hạn chế đối với API:
      1. Nhấp vào Restrict key (Hạn chế khoá).
      2. Chọn API JavaScript của Maps từ trình đơn thả xuống Chọn API. Nếu API JavaScript của Maps không có trong danh sách, bạn cần phải bật API này.
      3. Nếu dự án của bạn sử dụng Thư viện địa điểm, hãy chọn cả API Địa điểm. Tương tự như vậy, nếu dự án của bạn sử dụng các dịch vụ khác trong API JavaScript (Dịch vụ chỉ đường, Dịch vụ ma trận khoảng cách, Dịch vụ độ cao và/hoặc Dịch vụ mã hóa địa lý), thì bạn cũng phải bật và chọn API tương ứng trong danh sách này.
  4. Để hoàn tất các thay đổi, hãy nhấp vào Lưu.

SDK đám mây

Liệt kê các khoá hiện có.

gcloud services api-keys list --project="PROJECT"

Xoá các quy định hạn chế hiện có đối với khoá hiện tại.

gcloud alpha services api-keys update "projects/PROJECT/keys/KEY_ID" \
    --clear-restrictions

Đặt các quy định hạn chế mới đối với khoá hiện có.

gcloud alpha services api-keys update "projects/PROJECT/keys/KEY_ID" \
    --api-target="maps-backend.googleapis.com"
    --allowed-referrers="referer"

Đọc thêm về SDK Google Cloud , cài đặt SDK đám mây và các lệnh sau:

Thêm khoá API vào yêu cầu của bạn

Bạn phải cung cấp khoá API trong mọi yêu cầu API JavaScript cho Maps. Trong ví dụ sau, hãy thay thế YOUR_API_KEY bằng khoá API.

<script>
  (g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({
    key: "YOUR_API_KEY",
    v: "weekly",
    // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.).
    // Add other bootstrap parameters as needed, using camel case.
  });
</script>