Ограничить ключ API Google Directions во флаттере - PullRequest
0 голосов
/ 02 июня 2019

Я занимаюсь разработкой мобильного приложения для Flutter и хочу выпустить его в ближайшее время в Play Store. Он использует API-интерфейс Google Directions, и теперь я хочу ограничить использование ключа API этим конкретным приложением.

Мне удалось подписать приложение, и я ограничил ключ API для приложений Android с именем пакета моего приложения и отпечатком ключа SH1A ключа, оба из которых были перепроверены.

В любом случае запрос отклоняется как в режиме отладки (который я предполагаю преднамеренным), так и в режиме выпуска. Я получаю доступ к API через HTTP-пакет dart.

Моя теория состоит в том, что таким образом API-интерфейс Directions не может распознать имя пакета или отпечаток приложения. Это верно? Можно ли это исправить, используя пакет google_maps_webview или что-то еще?

Заранее спасибо,

Пол

1 Ответ

0 голосов
/ 02 июня 2019

Проблема в том, что Directions API является веб-службой.Google предполагает, что веб-сервисы вызываются из внутреннего кода, а не напрямую из внешнего интерфейса.Таким образом, единственным ограничением, которое поддерживается веб-службами, такими как API-интерфейсы, API геокодирования и т. Д., Является ограничение IP-адресов.Предполагается, что вы отправляете запросы в Google со своего внутреннего сервера и защищаете свой ключ API по IP-адресу вашего сервера.Ограничение приложения Android не работает с веб-службами.

Здесь вы можете узнать, какой тип ограничения поддерживается каждым API: Какие ключи или учетные данные следует использовать для различных продуктов Карт?

Для мобильных приложений Google настоятельно рекомендует создать промежуточный сервер для запросов веб-службы HTTP.Таким образом, ваше приложение будет отправлять запросы на промежуточный сервер, промежуточный сервер будет отправлять запросы API направлений с API-ключом, защищенным IP-адресом, в Google и передавать ответ обратно в ваше приложение.

Я могу предложить использовать клиентскую библиотеку Java для GoogleВеб-службы API Карт для реализации промежуточного прокси-сервера:

https://github.com/googlemaps/google-maps-services-java

Также есть клиентские библиотеки, доступные для других внутренних языков (Python, Go, NodeJs):

https://github.com/googlemaps/google-maps-services-python

https://github.com/googlemaps/google-maps-services-go

https://github.com/googlemaps/google-maps-services-js

Надеюсь, мой ответ прояснит ваше сомнение.

...