Ten adres IP, witryna lub aplikacja mobilna nie ma uprawnień do korzystania z tego klucza API

101

Używam https://maps.googleapis.com/maps/api/geocode/json ? łącze z kluczem serwera i adresem IP użytkownika, aby znaleźć szerokość i długość geograficzną dowolnego adresu, gdy próbuję, znajduję błąd jako

Mam klucz dostępu do serwera od Google i umieściłem adres IP mojego serwera na ich białej liście.

Adres URL, do którego próbuję uzyskać dostęp przez PHP CURL, to:

https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true&key=XXXXXXXXXXXX

Wynik, który otrzymuję:

Array ([error_message] => This IP, site or mobile application is not authorized to use this API key. [results] => Array ( ) [status] => REQUEST_DENIED)

Czy jest coś, co muszę skonfigurować? Włączone jest również API geokodowania.

user3336944
źródło
musisz uzyskać autoryzowany klucz z google i umieścić go w api
Dimag Kharab
Jest już dostępny klucz API
sanket
Sprawdź odpowiedź Mike'a. U mnie
zadziałało
Zaakceptuj odpowiedź mike20132013! To działa!
aveschini
Istnieje oficjalny dokument dotyczący tego problemu: chromium.org/Home/chromium-security/…
Gopal00005

Odpowiedzi:

150

Miałem ten sam problem i znalazłem to.

W adresie URL wymaga na końcu klucza serwera, a nie klucza API dla aplikacji.

Zasadniczo wystarczy dodać klucz serwera na końcu adresu URL w następujący sposób:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=yourlatitude,yourlongitude&radius=5000&sensor=true&key=SERVERKEY

Teraz, aby uzyskać klucz serwera, wykonaj następujące kroki:

1) Przejdź do Konsoli programisty https://code.google.com/apis/console/

2) W poświadczeniach, w sekcji Dostęp do publicznego interfejsu API, Utwórz nowy klucz

3) Wybierz klucz serwera z opcji.

4) Wpisz swój adres IP w polu, a jeśli masz więcej adresów IP, możesz po prostu dodać je w każdym wierszu. UWAGA: Wprowadź adres IP tylko wtedy, gdy chcesz go użyć do celów testowych. W przeciwnym razie pozostaw sekcję Adres IP pustą.

5) Po zakończeniu kliknij przycisk Utwórz, a nowy klucz serwera zostanie wygenerowany, a następnie możesz dodać ten klucz serwera do adresu URL.

Ostatnią rzeczą jest to, że zamiast umieszczać sensor = true w środku adresu URL, możesz dodać go na końcu w ten sposób:

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=yourlatitude,yourlongitude&radius=5000&key=SERVERKEY&sensor=true

To z pewnością rozwiąże problem i pamiętaj tylko o użyciu klucza serwera Places API.

EDYTOWAĆ

Uważam, że internetowy adres URL zmienił się w ostatnich latach. Możesz teraz uzyskać dostęp do konsoli programistów - https://console.developers.google.com/apis/dashboard

  • Przejdź do konsoli programistów - https://console.developers.google.com/ lub użyj linku do szczegółów, aby przejść bezpośrednio do panelu API.
  • W konsoli programisty znajdź etykietę w lewym panelu nawigacyjnym
  • Wybierz projekt
  • Wybierz Poświadczenia z lewego panelu nawigacyjnego
  • W razie potrzeby można utworzyć typ poświadczeń z górnego paska nawigacyjnego .

Mam nadzieję, że ta odpowiedź pomoże Tobie i innym widzom. Powodzenia .. :)

mike20132013
źródło
8
Bardzo ważne 4) Wpisz swój adres IP w polu, a jeśli masz więcej adresów IP, możesz po prostu dodać je w każdym wierszu. UWAGA: Wprowadź adres IP tylko wtedy, gdy chcesz go użyć do celów testowych. W przeciwnym razie pozostaw sekcję Adres IP pustą.
Sheraz Ahmad Khilji,
6
Zgadza się ... podaj tylko adres IP / adresy do celów testowych. W przeciwnym razie pozostaw to pole puste. Ponieważ ograniczasz aplikację lub klucz API do działania tylko na określonych urządzeniach / aplikacji.
mike20132013
1
@johnshumon Tak, chyba ... od dawna nie aktualizowałem odpowiedzi. Mogą być jakieś nowe zmiany API.
mike20132013
1
Może chcieć również upewnić Miejsca Google API Web Service jest włączona API, a także
Justin Wilson
1
Zmagałem się z tym przez wiele godzin, zanim odkryłem, że nowy „projekt” musi być teraz połączony z kontem rozliczeniowym Google w chmurze, aby interfejs API Google przestał generować te różne błędy ogólne. Próg można ustawić na 0 USD, więc nie zostaniesz obciążony, jeśli użycie przekroczy dozwolony limit.
Sparky,
15
  1. Wybierz klucz
  2. Zakładka API Restriction
  3. Wybierz klucz API
  4. Zapisać
  5. Wybierz Ograniczenie aplikacji -> Brak
  6. Zapisać

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

Tuan Nguyen
źródło
Miałem kilka usług wymienionych w ograniczeniach API, ale nie geokodowanie
Muhammad Umer
działał jak urok. Dzięki próbowałem geokodować. Ustawiłem ograniczenia aplikacji na żadne, jak wskazałeś i zadziałało.
Ravi
4
Ograniczenia: żadne nie jest dość niebezpieczne.
Deniss M.
9
Wyłączenie zabezpieczeń nie jest rozwiązaniem!
Bartholomej
NIE POZOSTAWIAJ KLUCZA API BEZ OGRANICZEŃ! Nowy „projekt” musi być teraz połączony z kontem rozliczeniowym, aby interfejs API Google przestał wyświetlać te różne błędy ogólne. Próg można ustawić na 0 USD, więc nie zostaniesz obciążony, jeśli użycie przekroczy dozwolony limit.
Sparky,
14

Oprócz przypisanego do Ciebie klucza interfejsu API Google weryfikuje również źródło przychodzącego żądania, sprawdzając REFERRERadres IP lub. Aby uruchomić przykład w curl, utwórz nową Server Keyw konsoli Google API . Tworząc go musisz podać adres IP serwera. W tym przypadku będzie to Twój lokalny adres IP . Po utworzeniu Server Keyi dodaniu adresu IP do białej listy powinieneś móc używać nowego klucza API w curl.

Domyślam się, że prawdopodobnie utworzyłeś swój klucz API jako, Browser Keyktóry nie wymaga dodania adresu IP do białej listy, ale zamiast tego używa REFERRERtagu nagłówka HTTP do weryfikacji. curl nie wysyła tego tagu domyślnie, więc Google nie mógł zweryfikować Twojego żądania.

Michael Venable
źródło
1+ Konieczne będzie utworzenie klucza API serwera do korzystania z usługi geokodowania Google. Należy również włączyć usługę geokodowania map Google z konsoli Google API .. Dzięki !!
Sumit Munot
Zmagałem się z tym przez wiele godzin, zanim odkryłem, że nowy „projekt” musi być teraz połączony z kontem rozliczeniowym Google w chmurze, aby interfejs API Google przestał generować te różne błędy ogólne. Próg można ustawić na 0 USD, więc nie zostaniesz obciążony, jeśli użycie przekroczy dozwolony limit.
Sparky,
6

Interfejs API Miejsc Google nie obsługuje obecnie kluczy systemu Android ani iOS wygenerowanych z konsoli interfejsów API Google. Obecnie obsługiwane są tylko klucze serwera i przeglądarki.

Nazrul Islam
źródło
1
Ciekawe ... jak więc wygenerować klucz do użycia w aplikacjach na Androida lub iOS?
Graham Perks
Twoje klucze przeglądarki będą działać w systemach Android i iOS. Uzyskaj klucze przeglądarki w konsoli interfejsów API Google
Nazrul Islam
Nie robią tego bez dodatkowego wysiłku. Właśnie to rozgryzłem po frustrującym dniu wczoraj; jest dodatkowy krok dla aplikacji: stackoverflow.com/a/58136437/434004
Graham Perks
3

Próbujesz użyć KLUCZA API, który został ograniczony w sposób uniemożliwiający wykonanie tej czynności.

Według Google:

Note: If you need to call web, web service, and/or mobile APIs from the same (client-side) app, create and restrict multiple keys.

Więc właściwą rzeczą jest utworzenie kolejnego KLUCZA API i wybranie odpowiednich ograniczeń w tej sprawie. W Twoim przypadku wybierz „Adresy IP” (w sekcji „Ograniczenia aplikacji”) i użyj opcji „DODAJ ELEMENT”, aby dodać adres IP serwera. Zwróć uwagę, że pozostawienie pustej listy nie zadziała i spowoduje, że Google zmieni Twoje ograniczenia na „Brak”.

Nie zapomnij również dodać odpowiednich interfejsów API w sekcji „Ograniczenia API” (w twoim przypadku „Geocoding API”).

Ostatnia rzecz - Google blokuje korzystanie z tego interfejsu API, dopóki nie połączysz swojej aplikacji z kontem rozliczeniowym Google Cloud. Więc jeśli jeszcze tego nie zrobiłeś, po pomyślnym otrzymaniu odpowiedzi powie, że musisz to zrobić najpierw (ma darmowy pakiet startowy).

brkeyal
źródło
2

Tworzysz klucz bez referencji, nie wprowadzaj adresu referencyjnego

DeadlyDroid
źródło
czy mógłbyś to rozwinąć
Sagar Devanga
2
Podczas tworzenia klucza masz miejsce na dodanie adresu odsyłającego, sprawdź, czy coś tam zostało dodane. jeśli dodano Wyczyść to
DeadlyDroid
2

Interfejs API Google Place wymaga dołączenia nagłówka HTTP odsyłającego podczas wykonywania wywołania interfejsu API.

Dołącz nagłówek HTTP „Referer: twoja_domena.com”, a to powinno rozwiązać problemy z odpowiedzią.

Ramesh
źródło
1
Chociaż może to odpowiedzieć na pytanie, zawsze dobrze jest umieścić w odpowiedzi jakiś tekst, aby wyjaśnić, co robisz. Przeczytaj, jak napisać dobrą odpowiedź . Powinieneś także dołączyć kod.
Jørgen R
Czy mógłbyś podać
krótki opis
Oto co zrobiłem i zadziałało idealnie: var options = {url: url, headers: {Referer: ' xxx.herokuapp.com '}}; request.get (opcje, funkcja (...
Floryda G.
1

Dla danego projektu należy również włączyć odpowiednie API

https://console.developers.google.com/apis/library?project=projectnamehere

dav
źródło
1

W przypadku najnowszej wersji API wydaje mi się, że jest dokładnie odwrotnie.

Podczas wywoływania adresu URL https://maps.googleapis.com/maps/api/geocode/json?address=<address>&key=<key>otrzymywałem następujący błąd

Musisz użyć klucza API, aby uwierzytelnić każde żądanie do interfejsów API Google Maps Platform. Dodatkowe informacje można znaleźć pod adresem http://g.co/dev/maps-no-account

Kiedy zmieniłem kolejność https://maps.googleapis.com/maps/api/geocode/json?key=<key>&address=<address>, działało dobrze.

Zauważ, że powyższy komunikat o błędzie był komunikatem, który otrzymałem, przechodząc bezpośrednio do adresu URL w przeglądarce. Kiedy zadzwoniłem do API z programu, otrzymałem odpowiedź HTML z zasadniczo następującym komunikatem:

Przepraszamy, ale Twój komputer lub sieć mogą wysyłać automatyczne zapytania. Aby chronić naszych użytkowników, nie możemy teraz przetworzyć Twojej prośby.

kilkfoe
źródło
Zmagałem się z tym przez wiele godzin, zanim odkryłem, że nowy „projekt” musi być teraz połączony z kontem rozliczeniowym Google w chmurze, aby interfejs API Google przestał generować te różne błędy ogólne. Próg można ustawić na 0 USD, więc nie zostaniesz obciążony, jeśli użycie przekroczy dozwolony limit.
Sparky
0

W przypadku aplikacji na iOS lub Androida klucz wymaga przyznania dodatkowych uprawnień.

Przejdź do Konsoli Google -> Interfejsy API i usługi -> Biblioteka. Stuknij bibliotekę Miejsc dla swojej platformy, a następnie stuknij opcję Włącz.

Zobacz https://developers.google.com/maps/gmp-get-started#enable-api-sdk

Graham Perks
źródło
0

Uwierzytelnianie, limity, ceny i zasady Uwierzytelnianie Aby korzystać z interfejsu Directions API, należy najpierw włączyć interfejs API i uzyskać odpowiednie dane uwierzytelniające. Więcej informacji znajdziesz w artykule Pierwsze kroki z Google Maps Platform.

Limity i ceny Przejrzyj stronę użytkowania i rozliczeń, aby uzyskać szczegółowe informacje na temat limitów i cen ustawionych dla interfejsu Directions API.

Zasady Korzystanie z Directions API musi być zgodne z zasadami API.

więcej informacji: odwiedź: --- https://developers.google.com/maps/documentation/directions/start?hl=en_US

Sudipta Ghosh
źródło
-2
  url = https://maps.googleapis.com/maps/api/directions/json?origin=19.0176147,72.8561644&destination=28.65381,77.22897&mode=driving&key=AIzaSyATaUNPUjc5rs0lVp2Z_spnJle-AvhKLHY

dodaj tylko w AppDelegate jak

            GMSServices.provideAPIKey("AIzaSyATaUNPUjc5rs0lVp2Z_spnJle-AvhKLHY")

i usuń klucz z tego adresu URL.

teraz adres URL to

https://maps.googleapis.com/maps/api/directions/json?origin=19.0176147,72.8561644&destination=28.65381,77.22897&mode=driving
Abubakar Bizimana
źródło
-3

Wyłącz interfejs API kierunku i API geokodowania i włącz ponownie.

działa tylko przez 5-10 sekund, a następnie automatycznie się wyłącza.

oznacza to, że masz tylko 5-10 sekund na przetestowanie swojego zadania.

Ѕћӗһ Ӡӓԃѧ
źródło