Использование ключа Google API с ограничением в Android
При создании ключа API Карт Google мы можем применить четыре ограничения:
- IP-адреса (веб-серверы, задания cron и т. Д.).
- HTTP Referer (Javascript)
- Andoid (для SDK)
- ios (для SDK)
Теперь все работает нормально, если мы используем ключи в их соответствующих местах.
Проблема возникает, когда мы хотим получить доступ к некоторому API с мобильного устройства (android/ios) с помощью REST, например, для получения данных о близлежащих местах для ввода пользователем. Какое ограничение будет работать в этом случае и как с этим справиться?
Я перепробовал все ограничения, но ничего не вышло.
Заранее спасибо.
2 ответа
Вы можете ограничить ключ для Android-приложения и выполнить HTTP-вызов REST в моем приложении, передав имя пакета Android и sha-1 в заголовке вашего https-вызова:
"X-Android-Package": "your.androidpackage.id"
"X-Android-Cert": "0000000000000000000000000000000000000000"
* обязательно удалите двоеточия ":" в ша.
Вам все равно нужно передать и раскрыть "ключ" в качестве параметра URL-адреса, но без учетных данных в заголовке он будет заблокирован.
Если я правильно понимаю, вы хотите использовать веб-службу Places API из своего мобильного приложения. Обычно предполагается, что веб-службы API Карт Google вызываются с внутренних серверов, и они поддерживают только ограничения IP-адресов.
Я бы посоветовал взглянуть на следующую статью об ограничениях, которые могут быть установлены для разных API.
https://developers.google.com/maps/faq
Как видите, веб-сервис Places API может использовать только ограничение IP-адреса. Посылать запросы API Адресов напрямую с мобильных устройств не имеет большого смысла, потому что у каждого устройства есть свой IP-адрес, а вы не знаете IP-адреса устройств пользователей. Итак, единственный возможный обходной путь для защиты ключа API - это создание промежуточного внутреннего сервера.
Приложение должно отправить запрос на ваш промежуточный сервер, промежуточный внутренний сервер должен отправить запрос API Places в Google с защищенным ключом API, ограниченным IP-адресом вашего сервера, и результаты прокси-сервера обратно в ваше приложение.
В этом сценарии вам понадобятся два ключа API. Один для Android SDK Google Maps с ограничением приложений Android и другой для веб-службы Places API с ограничением IP-адреса.
Надеюсь, это поможет!
Ограничение Android/Ios будет работать, в этом случае поместите туда свой SHA в нужное место, а затем имя вашего пакета в случае на Android. Это будет работать, также включите api, который вы используете, из консоли.