Dùng khóa API

Các sản phẩm của Nền tảng Google Maps được bảo vệ khỏi hành vi sử dụng trái phép bằng cách chỉ cho phép các lệnh gọi API chỉ cung cấp thông tin xác thực phù hợp. Các thông tin đăng nhập này sẽ ở dạng khoá API – một chuỗi duy nhất gồm chữ và số, 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 chỉ cho bạn 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) cho thấy 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 cho phiên bản chính thức.)

SDK đám mây

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

Đọc thêm về Google Cloud SDK, 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ế các khoá API bằng cách giới hạn phạm vi sử dụng của các khoá đó chỉ những API cần thiết cho ứng dụng của bạn. Việc hạn chế các 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 hợp lệ. Để biết thêm thông tin, hãy xem 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ế đối với ứng 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 giới thiệu HTTP (trang web) từ danh sách Hạn chế ứng dụng.
      2. Hãy chỉ định một hoặc nhiều trang web liên kết 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 chấp nhận mọi trang web kết thúc bằng .google.com khi truy cập qua HTTPS). Xin lưu ý rằng nếu bạn chỉ định www.domain.com, thì tên máy chủ sẽ hoạt động như một ký tự đại diện www.domain.com/* và cấp quyền cho mọi đường dẫn con trên tên máy chủ đó. Chỉ định lược đồ liên kết 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 một cách biểu diễn đặc biệt. Ví dụ: định dạng file:///path/to/__file_url__//path/to/*. Sau khi bật trang web, hãy nhớ theo dõi mức sử dụng để đảm bảo mức sử dụng phù hợp với kỳ vọng của bạn. Các giao thức sau được hỗ trợ: 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 Maps JavaScript API trong 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 enable 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ự, nếu dự án của bạn sử dụng các dịch vụ khác trong API JavaScript (Dịch vụ đường đi, Dịch vụ ma trận khoảng cách, Dịch vụ độ cao và/hoặc Dịch vụ mã hoá đị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 nội dung thay đổi, hãy nhấp vào Save (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 có.

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ề Google Cloud SDK, 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 của 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>