Использование ключа Google API с ограничением в Android

При создании ключа API Карт Google мы можем применить четыре ограничения:

  1. IP-адреса (веб-серверы, задания cron и т. Д.).
  2. HTTP Referer (Javascript)
  3. Andoid (для SDK)
  4. 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, который вы используете, из консоли.

Другие вопросы по тегам