Запрос API Google Places отклонен для автозаполнения Android, даже с помощью правильного ключа api
Я пытаюсь создать поле Autocomplete, которое должно отображать города как типы пользователей, используя API Google Адресов, как описано в этом уроке:
https://developers.google.com/places/training/autocomplete-android
Вероятно, вы нашли этот вопрос много раз раньше, чем я, но ни один из ответов не помог мне. Вот что вы должны знать:
URL-адрес
https://maps.googleapis.com/maps/api/place/autocomplete/json?sensor=false&key=myKey&components=country:ro&input=whatTheUserTypes
Пожалуйста, не отвечайте, говоря, что вы заменили ключ API своим, и он сработал - ключ API, который идет туда, должен быть специфичным для Android и не будет работать в браузере.
Так я сделал ключ Android API, используя отпечаток SHA1, полученный из хранилища ключей, с которым я подписал приложение.
Я включил API-интерфейсы Maps and Places с консоли.
Квота не превышена.
Все те, и это все еще дает мне REQUEST_DENIED
Я не упоминал, что активирован O2Auth - это что-то меняет? Разве это не так просто, как положить ключ API в приложение?
Спасибо!
Ответы
Ответ 1
В настоящее время API Google Places не поддерживает ключи Android или iOS, созданные в консоли Google API. В настоящее время поддерживаются только ключи сервера и браузера.
Если вы хотите запросить эту поддержку, напишите Places API - Feature Request.
Ответ 2
Хотя на это был дан ответ, я думаю, что сообщество может сделать лучше.
Я разорвал свои волосы об этом, это просто не имело смысла для меня.. Я делал приложение iOS/Android, поэтому я сделал iOS/Android Key...
Неправильно.
С API Google Адресов ваш идентификатор пакета даже не рассматривается.
Что вы действительно хотите сделать, так это:
(Я использую новый пользовательский интерфейс)
1. Войдите в https://cloud.google.com/console#/project
Выберите название проекта, затем перейдите в API API и Auth >
Убедитесь, что у вас включен API "Места". Это единственное, что нужно для использования Places-API.
![enter image description here]()
2. Войдите в учетные данные
Нажмите CREATE NEW KEY в разделе Public API Access
![enter image description here]()
3. Выберите BROWSER KEY
![enter image description here]()
4. Нажмите "Создать", "Ничего больше"
Оставьте пустое поле HTTP Refer.
![enter image description here]()
5. Используйте созданный ключ здесь
Этот ключ позволит ЛЮБОЙ пользователю с любого устройства получить доступ к API через ваш логин разработчика.
Вы можете попробовать его здесь: (Обязательно замените YOUR_KEY_HERE на свой сгенерированный ключ)
https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Food%20Sh&sensor=false&radius=500&location=0,0&key=YOUR_KEY_HERE
6. Наслаждайтесь
Теперь вы можете использовать этот URL выше на своем устройстве Android/iOS.
Ответ 3
https://developers.google.com/places/training/autocomplete-android
Сохранение ключа API
Хотя приведенный выше код демонстрирует, как напрямую общаться между Android-приложением и службой автозаполнения мест, вы должны не сохраняйте свой API-интерфейс Places с вашим приложением.
Поэтому вы должны создать веб-приложение, которое хранит ваш ключ API и проксирует службы API Places. Для обеспечения связи между вашим Android-приложением и прокси-сервером вам необходимо аутентификация пользователя на ваш прокси-сервер. Приложение для Android может безопасно хранить учетные данные пользователя и передавать их на веб-службу или пользователь может войти в ваше веб-приложение через Android WebView.
Для последнего подхода ваше веб-приложение должно создать и вернуть пользователя токен аутентификации в Android-приложении, а ваше приложение для Android должно затем передайте этот токен вашему прокси-серверу.
Ответ 4
В консоли Google dev вы сможете найти как "API мест", так и "API мест для Android"
![dev console search]()
Обязательно используйте "API мест для Android"
По какой-то причине "API-интерфейс мест для Android" скрыт в списке API, но к нему можно получить доступ с помощью поиска.
Ответ 5
У меня была такая же проблема, я исправил ее, оставив
Принять запросы от этих HTTP-рефереров (веб-сайтов) (необязательно)
в окне браузера Пустой
Ответ 6
Я все еще новичок, поэтому я не могу комментировать, но, чтобы пролить свет на ответ Мо, я решил некоторые подобные проблемы API Карт Google в отношении URL-запросов (для направлений, используя Volley) со следующими шагами:
- Получить ключ API Android (в том числе API Google Maps Directions в моем случае).
- Получить "API-интерфейс сервера" (который, похоже, создается с помощью ограничения ключей "HTTP-рефереров" в наши дни - действительно, он просто использовался для отправки URL-запросов через HTTP).
- Сохраните ключ API Android в качестве тега
meta-data
в теге application
в AndroidManifest.xml
с помощью android:name="com.google.android.maps.v2.API_KEY"
и android:value
в качестве вашего ключа. Это используется для прямого взаимодействия с API Карт (минус URL-запросы).
- Используйте ключ API сервера при выдаче запросов URL.
Я не уверен, что это также относится к URL-запросам для API Places, если вам нужен только ключ API-сервера сервера, или если есть лучшее решение, но это сработало для меня.
Я предполагаю, что он работает только с первым ключом - тем, который не ограничен Android.
Ответ 7
Внутри Google Cloud Console введите Places и активируйте его. Создайте ключ API и вставьте его в приложение Android Studio, как обычно. Это.