Использование ключей API

Продукты платформы Google Карт защищены от несанкционированного использования, поскольку принимают только те вызовы API, которые содержат надлежащие учетные данные для аутентификации. Эти учетные данные предоставляются в виде ключа API – уникальной строки из букв и цифр, которая связывает платежный аккаунт Google с проектом и с определенным API или SDK.

В этом руководстве показано, как создать и использовать ключ API платформы Google Карт, а также ограничить его использование.

Подготовка

Чтобы начать работу, вам потребуется создать проект с платежным счетом и включенным Maps JavaScript API. Инструкции вы можете найти в статье Настройки в Google Cloud Console.

Как создать ключи API

Ключ API – это уникальный идентификатор, который используется для аутентификации запросов, связанных с вашим проектом. Он нужен для учета использования API и оплаты. С вашим проектом должен быть связан хотя бы один ключ API.

Чтобы создать его, выполните следующие действия:

Cloud Console

  1. Откройте страницу Google Maps Platform > Credentials (Платформа Google Карт > Учетные данные).

    Перейти на страницу Credentials (Учетные данные)

  2. На странице Учетные данные нажмите Создать учетные данные > Ключ API.
    Появится диалоговое окно с созданным ключом API.
  3. Нажмите Close (Закрыть).
    Новый ключ API можно будет найти в разделе Ключи API на странице Учетные данные.
    Не забудьте настроить ограничения для ключа API, прежде чем использовать его в рабочей среде.

Cloud SDK

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

Прочитайте статьи о Google Cloud SDK, установке Cloud SDK и следующих командах:

Как ограничить использование ключей API

Мы настоятельно рекомендуем ограничивать использование ключей только теми API, которые необходимы для работы вашего приложения. Это защитит ваше приложение от нежелательных запросов. Подробную информацию вы найдете в Рекомендациях по обеспечению безопасности доступа к API.

Чтобы задать ограничение для ключа API, выполните следующие действия:

Cloud Console

  1. Откройте страницу Google Maps Platform > Credentials (Платформа Google Карт > Учетные данные).

    Перейти на страницу Credentials (Учетные данные)

  2. Выберите нужный ключ API. Откроется страница со свойствами ключа API.
  3. В разделе Key restrictions (Ограничения для ключа) установите следующие ограничения:
    • Ограничения для приложений:
      1. Чтобы принимать запросы от сайтов, входящих в составленный вами список, выберите HTTP referrers (web sites) (HTTP-источники перехода (веб-сайты)) в списке Application restrictions (Допустимый тип приложений).
      2. Укажите один или несколько сайтов – источников перехода. Можно использовать подстановочные знаки для авторизации всех субдоменов (например, если ввести значение *.google.com, то будут допускаться все сайты, у которых названия доменов оканчиваются на .google.com). Укажите https:// и http:// в исходном виде. Для других типов протоколов URL источников перехода нужно использовать специальное представление. Например, file:///path/to/ нужно отформатировать как __file_url__//path/to/*. Включив источники перехода, обязательно отслеживайте использование, чтобы убедиться, что оно соответствует вашим ожиданиям. Поддерживаются следующие протоколы источников перехода: about://, app://, applewebdata://, asset://, chrome://, content://, file://, ftp://, ionic://, local://, ms-appx://, ms-appx-web://, ms-local-stream://, prism://, qrc://, res://, saphtmlp://.
    • Ограничения для API:
      1. Нажмите Restrict key (Применить ограничения для ключа).
      2. В раскрывающемся списке Select APIs (Выберите API) нажмите Maps JavaScript API. Если Maps JavaScript API нет в списке, его необходимо включить.
      3. Если в вашем проекте используется библиотека Places, выберите Places API. Также необходимо включить и выбрать API, указанные в этом списке, для всех других сервисов, которые нужны для работы JavaScript API (Directions Service, Distance Matrix Service, Elevation Service и/или Geocoding Service).
  4. Нажмите Save (Сохранить).

Cloud SDK

Список существующих ключей.

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

Снятие ограничений с существующего ключа.

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

Настройка новых ограничений для существующего ключа.

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

Прочитайте статьи о Google Cloud SDK, установке Cloud SDK и следующих командах:

Как добавить ключ API в запрос

Каждый запрос к Maps JavaScript API должен содержать ключ API. Укажите свой ключ API вместо YOUR_API_KEY в следующем примере:

<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_HERE",
    // Add other bootstrap parameters as needed, using camel case.
    // Use the 'v' parameter to indicate the version to load (alpha, beta, weekly, etc.)
  });
</script>