Google umieszcza żądanie API odrzucone dla autouzupełniania systemu Android, nawet przy użyciu odpowiedniego klucza api

Próbuję utworzyć pole autouzupełniania, które powinno pobierać miasta jako typy użytkowników, używając interfejsu API Google Places, jak opisano w tym samouczku: https://developers.google.com/places/training/autocomplete-android

Prawdopodobnie już wiele razy tak samo jak ja znajdowałeś to pytanie, ale żadna z odpowiedzi mi nie pomogła. Oto rzeczy, które powinieneś wiedzieć:

URL na https://maps.googleapis.com/maps/api/place/autocomplete/json?sensor=false&key=myKey&components=country:ro&input=whatTheUserTypes

Proszę nie odpowiadać, mówiąc, że zamieniłeś klucz API na swój własny i zadziałał-klucz API, który tam trafia, musi być specyficzny dla Androida i nie będzie działał z przeglądarki.

Tak jak zrobiłem klucz API Androida za pomocą odcisku palca SHA1 uzyskanego z keystore, z którym podpisałem aplikację. Włączyłem API Map i miejsc z konsola. Limit nie został przekroczony.

Wszystkie te i wciąż daje mi REQUEST_DENIED

Nie wspomniałem o tym, że mam aktywowany O2Auth - czy to coś zmienia? Czy nie powinno to być tak proste, jak umieszczenie klucza API w aplikacji?

Dzięki!

Author: Stefan Malacu, 2013-02-01

9 answers

Interfejs API Google Places nie obsługuje obecnie klawiszy Android lub iOS generowanych z konsoli Google API. Obecnie obsługiwane są tylko klucze serwera i przeglądarki.

Jeśli chcesz poprosić o tę pomoc, złóż zapytanie Places API-Feature Request .

 28
Author: Chris Green,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-31 10:29:44

Chociaż odpowiedź na to pytanie została udzielona, myślę, że społeczność mogłaby zrobić coś lepszego.

Wyrywałem sobie włosy z tego powodu, to po prostu nie miało dla mnie sensu.. Robiłem aplikację na iOS/Android, więc zrobiłem klucz na iOS / Android... Źle.

Dzięki interfejsowi API Miejsc Google identyfikator pakietu nie jest nawet brany pod uwagę.

To, co naprawdę chcesz zrobić, to: (Używam nowego interfejsu użytkownika)

1. Zaloguj się https://cloud.google.com/console#/project

Wybierz nazwę projektu, a następnie przejdź do API & Auth > API

Upewnij się, że masz włączone API miejsc. Jest to jedyna rzecz, która musi być włączona, aby API mogło działać. Tutaj wpisz opis obrazka

2. Przejdź do listy uwierzytelnień

Kliknij Utwórz nowy klucz w obszarze dostęp do publicznego API Tutaj wpisz opis obrazka

3. Wybierz klucz przeglądarki Tutaj wpisz opis obrazka

4. Kliknij Utwórz, Nic Więcej

Zostawić pole referencji HTTP jest puste.

Tutaj wpisz opis obrazka

5. Użyj wygenerowanego tutaj klucza

Ten klucz pozwoli każdemu użytkownikowi z dowolnego urządzenia uzyskać dostęp do API za pośrednictwem loginu dewelopera. Możesz go wypróbować tutaj: (pamiętaj, aby zastąpić YOUR_KEY_HERE wygenerowanym kluczem)

https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Food%20Sh&sensor=false&radius=500&location=0,0&key=YOUR_KEY_HERE

6. Enjoy

Teraz możesz użyć powyższego adresu URL w urządzeniu z Androidem/iOS.

 94
Author: Moe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-27 07:40:20

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

Przechowywanie klucza API

Chociaż powyższy kod pokazuje jak komunikować się bezpośrednio między aplikacją na Androida a usługą autouzupełniania miejsc, należy nie przechowuj klucza API miejsc w aplikacji.

Dlatego powinieneś zbudować aplikację internetową, która przechowuje Twój klucz API i proxy usług API miejsc. W celu zabezpieczenia komunikacji między Twoją Aplikacji na Androida i usługi internetowej proxy, należy wymagać uwierzytelnianie użytkownika w usłudze internetowej proxy. Twoja aplikacja na Androida może bezpiecznie przechowuj poświadczenia użytkowników i przekaż je do usługi internetowej lub użytkownik może zalogować się do aplikacji internetowej za pomocą widoku internetowego na Androida.

W tym drugim podejściu Twoja aplikacja internetowa powinna utworzyć i zwrócić użytkownika token uwierzytelniania do aplikacji na Androida, a aplikacja na Androida powinna następnie przekaż ten token do usługi internetowej proxy.

 5
Author: Arc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-02 01:42:57

Przejdź do konsoli google cloud platform > poświadczenia kliknij Edytuj, wybierając swój YOUR_API_KEY>ograniczenia aplikacji > Wybierz none Opcja> Zapisz to wszystko.

Jeśli wybierzesz opcję android apps z Application restrictions, google odrzuci API miejsca z wyjątkiem REQUEST_DENIED.

 1
Author: Black4Guy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-05-10 09:52:43

W Google dev console powinieneś być w stanie znaleźć zarówno "Places API", jak i "Places API dla Androida"

dev console search

Upewnij się, że używasz "API miejsc dla Androida"

Z jakiegoś powodu "API miejsc dla Androida" jest ukryte na liście API, ale można uzyskać do niego dostęp za pomocą wyszukiwania.

 0
Author: Singed,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-31 08:42:06

Miałem ten sam problem, naprawiam go zostawiając

Accept requests from these HTTP referrers (web sites) (Optional)

In browser key Empty

 0
Author: Mina Fawzy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-24 23:00:43

Wciąż jestem nowy, więc nie mogę komentować, ale aby rzucić trochę światła na odpowiedź Moe, rozwiązałem kilka podobnych problemów z Google Maps API dotyczących zapytań URL (dla kierunków, za pomocą Volley) z następującymi krokami:

  1. Pobierz klucz API Androida(w tym Google Maps Directions API w moim przypadku).
  2. Pobierz klucz API "Server" (który wydaje się być tworzony przez użycie ograniczenia klucza "http referrers" w dzisiejszych czasach - tak naprawdę jest używany do wysyłania zapytań URL przez HTTP).
  3. przechowuj Klucz API Androida jako znacznik meta-data w znaczniku application w AndroidManifest.xml z android:name="com.google.android.maps.v2.API_KEY" i android:value jako kluczem. Jest to używane do bezpośredniej interakcji z API Maps (bez zapytań URL).
  4. używaj klucza API serwera przy każdym wysyłaniu zapytań URL.

Nie jestem pewien, czy dotyczy to również zapytań URL dla API miejsc, jeśli potrzebujesz tylko klucza API serwera, czy istnieje lepsze rozwiązanie, ale to działało dla mnie.

Wyobrażam sobie, że działa tylko z pierwszym kluczem - tym, który nie ogranicza się do Android.

 0
Author: John Rattz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-17 18:44:06

Wewnątrz Google Cloud Console wpisz miejsca i aktywuj je. Utwórz klucz API i włóż go do aplikacji Android Studio, jak zwykle. To wszystko.

 0
Author: Dimitri de Jesus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-09-09 02:19:31

Miałem ten sam problem. Dla mnie kluczem było umożliwienie rozliczania projektu. Nadal używam ograniczeń "aplikacje na Androida". Po skonfigurowaniu metody płatności API miejsc zaczęło działać.

Przed użyciem zestawu Places SDK dla Androida wykonaj następujące czynności:

  • postępuj zgodnie z przewodnikiem Pobierz klucz API, aby uzyskać, dodać i ograniczyć klucz API.
  • włącz rozliczanie każdego z twoich projektów.
  • włącz API miejsc dla każdego z twoich projektów.

Zobacz tam .

Pamiętaj również, aby sprawdzić plany rozliczeniowe dla Google Places API, ponieważ nie jest bezpłatny!

 0
Author: Kamil Z,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-04 18:06:03