Запрос API Google Адресов отклонен для автозаполнения Android даже при использовании правильного ключа API
Я пытаюсь создать поле автозаполнения, которое должно выбирать города по типу пользователя, используя API Google Places, как описано в этом руководстве: https://developers.google.com/places/training/autocomplete-android
Вы, наверное, уже много раз встречали этот вопрос, как и я, но ни один из ответов не помог мне. Вот то, что вы должны знать:
Пожалуйста, не отвечайте, сказав, что вы заменили ключ 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 (для указаний, используя залп), выполнив следующие шаги:
- Получить ключ API Android (включая Google Maps Directions API в моем случае).
- Получить "Серверный" 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 Адресов, если вам нужен только ключ API сервера или если есть лучшее решение, но это сработало для меня.
Я полагаю, что он работает только с первым ключом - тот, который не ограничивается Android.