Запрос API Google Адресов отклонен для автозаполнения Android даже при использовании правильного ключа API

Я пытаюсь создать поле автозаполнения, которое должно выбирать города по типу пользователя, используя API Google Places, как описано в этом руководстве: 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 и не будет работать из браузера.

Так же я сделал ключ API Android, используя отпечаток SHA1, полученный из хранилища ключей, с которым я подписал приложение. Я включил API Карт и Мест из консоли. Квота не превышена.

Все те, и это все еще дает мне REQUEST_DENIED

Я не упомянул, что у меня активирован O2Auth - это что-то меняет? Разве это не должно быть так просто, как вставить ключ API в приложение?

Спасибо!

6 ответов

Решение

Google Places API в настоящее время не поддерживает ключи Android или iOS, сгенерированные из консоли API Google. В настоящее время поддерживаются только ключи сервера и браузера.

Если вы хотите запросить эту поддержку, отправьте API-адрес Places API - Feature Feature.

Хотя на этот вопрос уже дан ответ, я думаю, что сообщество могло бы добиться большего.

Я рвал на себе волосы по этому поводу, для меня это просто не имело смысла... Я делал приложение для iOS/Android, поэтому я сделал Ключ для iOS/Android...Неправильно.

С Google Places API идентификатор вашего пакета даже не учитывается.

Что вы действительно хотите сделать, это: (я использую новый пользовательский интерфейс)

1. Войдите в https://cloud.google.com/console.

Выберите название своего проекта, затем перейдите в API & Auth > APIs

Убедитесь, что у вас включен Places API. Это единственное, что нужно включить для работы Places-API.введите описание изображения здесь

2. Войдите в учетные данные

Нажмите СОЗДАТЬ НОВЫЙ КЛЮЧ в разделе Доступ к публичному API.введите описание изображения здесь

3. Выберите БРАУЗЕР КЛЮЧвведите описание изображения здесь

4. Нажмите Создать, Ничего Остального

Оставьте поле Ссылка HTTP пустым.

введите описание изображения здесь

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.

https://developers.google.com/places/training/autocomplete-android

Хранение вашего ключа API

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

Поэтому вам следует создать веб-приложение, в котором хранится ваш ключ API и проксируются службы API Places. Чтобы обеспечить безопасную связь между вашим Android-приложением и прокси-веб-службой, вам потребуется аутентификация пользователя для вашего прокси-веб-службы. Ваше приложение Android может безопасно хранить учетные данные пользователя и передавать их в веб-службу, или пользователь может войти в ваше веб-приложение через Android WebView.

Для последнего подхода ваше веб-приложение должно создать и вернуть маркер аутентификации пользователя в ваше приложение Android, а ваше приложение Android должно впоследствии передать этот токен веб-службе прокси.

Перейдите в консоль облачной платформы Google>Учетные данные, нажмите "Изменить", выбрав YOUR_API_KEY>Ограничения приложений > выберите вариант " Нет" >сохраните его.

Если вы выберете опцию приложений Android в разделе " Ограничения приложений", Google откажется от API места с исключением REQUEST_DENIED.

У меня была такая же проблема, я исправляю, оставляя

Принимать запросы от этих HTTP-рефереров (веб-сайтов) (необязательно)

в ключе браузера Пусто

В консоли разработчика Google вы должны найти "Places API" и "Places API для Android".

поиск консоли разработчика

Обязательно используйте "Places API для Android"

По какой-то причине "API мест для Android" скрыт в списке API, но доступ к нему можно получить с помощью поиска.

У меня такая же проблема. Для меня ключевым моментом было включение биллинга по проекту. Я все еще использую ограничения "Приложения для Android". После настройки способа оплаты заработал Places Api.

Перед использованием Places SDK для Android выполните следующие действия:

  • Следуйте инструкциям по получению ключа API, чтобы получить, добавить и ограничить ключ API.
  • Включите выставление счетов для каждого из ваших проектов.
  • Включите API Адресов для каждого из ваших проектов.

Посмотри там.

Обязательно ознакомьтесь с тарифными планами для API Google Адресов, так как он платный!

Внутри Google Cloud Console введите Places и активируйте его. Создайте ключ API и вставьте его в свое приложение Android Studio, как обычно. Вот и все.

Я все еще новичок, поэтому не могу комментировать, но чтобы пролить свет на ответ Мо, я решил некоторые похожие проблемы API Карт Google, касающиеся запросов URL (для указаний, используя залп), выполнив следующие шаги:

  1. Получить ключ API Android (включая Google Maps Directions API в моем случае).
  2. Получить "Серверный" API-ключ (который, кажется, создается с использованием ограничения ключей "HTTP-рефереры" в наши дни - на самом деле, он просто используется для выдачи URL-запросов через HTTP).
  3. Сохраните ключ API Android как meta-data тег в application отметить в AndroidManifest.xml с android:name="com.google.android.maps.v2.API_KEY" а также android:value как твой ключ. Это используется для прямого взаимодействия с API Карт (за исключением запросов URL).
  4. Используйте ключ API сервера при выдаче URL-запросов.

Я не уверен, относится ли это также к URL-запросам для API Адресов, если вам нужен только ключ API сервера или если есть лучшее решение, но это сработало для меня.

Я полагаю, что он работает только с первым ключом - тот, который не ограничивается Android.

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