Срок действия предоставленного ключа API истек (для API направлений) - PullRequest
0 голосов
/ 27 марта 2020

Я посмотрел первые 15 "похожих вопросов" на мой вопрос, и ни один из них не решил мою проблему. Иногда я получаю сообщение об ошибке для одного и того же запроса API: «This IP, site or mobile application is not authorized to use this API key. Request received from IP address {*ip_address*}, with empty referer». Я также искал это, и ни одно из предложенных решений не помогло в моем случае.

Моя текущая ситуация

  • Я звоню https://maps.googleapis.com/maps/api/directions/json?key=MYKEY&some_other_params в iOS project
  • Я использую ключ API, который ограничен идентификатором пакета
  • У меня есть список элементов (давайте назовем его элементами местоположения ), которые при нажал, я вызываю API направления, чтобы получить информацию о маршруте
  • Я получаю две ошибки, которые я упомянул выше, взаимозаменяемо. Это означает, что иногда я получаю ошибку с истекшим сроком, а иногда я получаю ошибку IP. Я получаю ошибки для того же элемента местоположения.

Включены API:

  • API направлений
  • API геолокации
  • Maps SDK для iOS
  • API геокодирования
  • Places API

Идентификатор пакета не является проблемой

Я знаю, что мой Bundle ID правильный, так как я использую его с другим сервисом, который является Firebase. Чтобы устранить глупую ошибку при опечатке, я скопировал тот же идентификатор пакета из моих учетных данных Firebase API. Мой ключ API для Firebase ограничен тем же идентификатором пакета и службой Firebase. Работает без проблем.

Только ограничения API

Чтобы устранить проблему идентификатора пакета, я также попытался Нет для Ограничения приложения и выбрал ограничить API. Я добавил по одному API-интерфейсы, перечисленные выше, и назвал API-адреса. Ничего не помогло, ни один API (Directions API), ни один из них.

Странная вещь в Places API

Странное поведение, которое я получаю, заключается в том, что Я создал новый ключ API, и он работал без каких-либо ограничений. Что еще более странно, я временно отключил API Адресов. Я сделал это так, как хотел «обновить» 1078 * моих API. В другой ветке я прочитал, что проблема с IP была решена путем отключения и повторного включения API Адресов. Поэтому я отключил его, но сразу не включил. Я использовал новый ключ API и, щелкая мои позиции, получаю информацию о маршруте (я получил желаемый результат).

Другие ограничения (ограничение использования и выставление счетов)

I Знайте, что речь идет не об ограничении слишком большого количества попыток использования API направлений. В документации указано, что ограничение составляет 50 запросов в секунду. Кроме того, я сделал «быстрый щелчок элементов», используя неограниченный ключ API 1066 *, и я всегда получаю информацию о маршруте. Биллинг также включен в нашем проекте, так что это не проблема.

Застрял с неограниченным ключом

Прямо сейчас мы используем неограниченный ключ, который недопустим. Интересно, почему использование неограниченного ключа работает отлично, а ограничение - нет. Я уверен, что мне не хватает конфигурации, но я перепробовал все возможные комбинации, которые я могу придумать.

1 Ответ

1 голос
/ 31 марта 2020

Ключи API, ограниченные идентификатором пакета вашего приложения, не будут работать для запросов веб-службы бэкенда, таких как Directions API. Эти ключи API будут работать только для запросов, сделанных из Places SDK и Maps SDK для iOS. По этой причине вы получаете сообщение об ошибке: «IP, сайту или мобильному приложению не разрешено использовать этот ключ API. Запрос получен с IP-адреса { ip_address }, с пустым реферером».

Согласно Google Maps Рекомендации по использованию ключей API , для ключей API, используемых для веб-служб, отправляемых непосредственно из мобильных приложений, вы можете использовать один или несколько из следующих методов для защиты ключей API:

  • Использование прокси-сервера. Прокси-сервер предоставляет источник solid для взаимодействия с соответствующим API Google Maps Platform. Затем ограничьте ваш ключ API ограничениями IP-адресов.
  • Обфускация или шифрование ключа API или секрета подписи. Это затрудняет извлечение ключей API и других личных данных непосредственно из приложения.
  • Используйте закрепление CA или закрепление сертификата, чтобы убедиться, что ресурсы сервера действительны. CA закрепление проверяет, что сертификат сервера был выпущен доверенным центром сертификации, и предотвращает атаки Man-In-the-Middle, которые могут привести к третьему лицу, обнаружившему ваш ключ API.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...