Подтвердить что ты не робот

Запрос 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 в приложение?

Спасибо!

4b9b3361

Ответ 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, как обычно. Это.