Продукты платформы Google Maps защищены от несанкционированного использования за счет ограничения вызовов API теми, которые предоставляют правильные учетные данные для аутентификации. Эти учетные данные имеют форму ключа API — уникальной буквенно-цифровой строки, которая связывает ваш платежный аккаунт Google с вашим проектом, а также с конкретным API или SDK.
В этом руководстве показано, как создать, ограничить и использовать ключ API для платформы Google Карт.
Прежде чем начать
Прежде чем вы начнете использовать Maps JavaScript API, вам понадобится проект с платежным аккаунтом и включенным Maps JavaScript API. Дополнительные сведения см. в разделе Настройка в Cloud Console .
Создать ключи API
Ключ API — это уникальный идентификатор, который удостоверяет подлинность запросов, связанных с вашим проектом, для целей использования и выставления счетов. У вас должен быть хотя бы один ключ API, связанный с вашим проектом.
Чтобы создать ключ API:
Консоль
Перейдите на платформу Google Maps > страницу «Учетные данные» .
- На странице «Учетные данные» нажмите «Создать учетные данные» > «Ключ API» .
В диалоговом окне создания ключа API отображается только что созданный ключ API. - Нажмите «Закрыть».
Новый ключ API указан на странице «Учетные данные» в разделе «Ключи API» .
(Не забудьте ограничить ключ API перед его использованием в рабочей среде.)
Облачный SDK
gcloud alpha services api-keys create \ --project "PROJECT" \ --display-name "DISPLAY_NAME"
Узнайте больше о Google Cloud SDK , установке Cloud SDK и следующих командах:
Ограничить ключи API
Google настоятельно рекомендует вам ограничить использование ключей API, ограничив их использование только теми API, которые необходимы для вашего приложения. Ограничение ключей API повышает безопасность вашего приложения, защищая его от необоснованных запросов. Дополнительные сведения см. в разделе «Рекомендации по обеспечению безопасности API» .
Чтобы ограничить ключ API:
Консоль
Перейдите на платформу Google Maps > страницу «Учетные данные» .
- Выберите ключ API, для которого вы хотите установить ограничение. Появится страница свойств ключа API.
- В разделе «Ограничения ключей» установите следующие ограничения:
- Ограничения применения:
- Чтобы принимать запросы из списка предоставленных вами веб-сайтов, выберите HTTP-рефереры (веб-сайты) из списка ограничений приложения .
- Укажите один или несколько реферальных веб-сайтов. Вы можете использовать подстановочные знаки для авторизации всех субдоменов (например,
https://*.google.com
принимает все сайты, заканчивающиеся на.google.com
, при доступе по HTTPS). Обратите внимание: если вы укажете www.domain.com, он действует как подстановочный знак www.domain.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:
- Нажмите Ограничить ключ .
- Выберите Maps JavaScript API в раскрывающемся списке «Выбор API» . Если Maps JavaScript API отсутствует в списке, его необходимо включить .
- Если в вашем проекте используется библиотека Places, также выберите Places API . Аналогично, если ваш проект использует другие службы в API JavaScript ( Служба направлений , Служба матрицы расстояний , Служба высот и/или Служба геокодирования ), вам также необходимо включить и выбрать соответствующий API в этом списке.
- Чтобы завершить изменения, нажмите «Сохранить» .
Облачный 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 в свой запрос
Вы должны включать ключ API в каждый запрос Maps JavaScript API. В следующем примере замените YOUR_API_KEY
своим ключом 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>