Questo IP, sito o applicazione mobile non è autorizzato a utilizzare questa chiave API


101

Sto usando https://maps.googleapis.com/maps/api/geocode/json ? collegamento con chiave server e IP utente per trovare la latitudine e la longitudine di qualsiasi indirizzo, quando provo trovo l'errore come

Ho una chiave di accesso al server di Google e ho inserito l'indirizzo IP del mio server nella loro lista bianca.

L'URL a cui sto tentando di accedere tramite PHP CURL è:

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

Il risultato che sto ottenendo:

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

C'è qualcosa che devo configurare, anche l'API di geocodifica è attivata.


devi ottenere una chiave autorizzata da Google e inserirla
nell'API

Esiste già una chiave API disponibili
Sanket

Controlla la risposta di Mike che ha funzionato per me
Sheraz Ahmad Khilji

Accetta la risposta di mike20132013! Funziona!
aveschini

Esiste un documento ufficiale per questo numero: chromium.org/Home/chromium-security/…
Gopal00005

Risposte:


150

Ho avuto lo stesso problema e ho trovato questo.

Sull'URL, richiede la chiave del server alla fine e non la chiave API per l'app.

Quindi, in pratica, aggiungi la chiave del server alla fine dell'URL in questo modo:

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

Ora, per ottenere la chiave del server, segui questi passaggi:

1) Vai alla Developer Console https://code.google.com/apis/console/

2) In Credentials, in Public API Access, Create New key

3) Selezionare la chiave del server dall'opzione.

4) Inserisci il tuo indirizzo IP nel campo e se hai più indirizzi IP, puoi semplicemente aggiungere su ogni singola riga. NOTA: immettere l'indirizzo IP solo quando si desidera utilizzarlo a scopo di test. Altrimenti lasciare vuota la sezione Indirizzo IP.

5) Al termine, fai clic su crea e la tua nuova chiave server verrà generata e potrai quindi aggiungere quella chiave server al tuo URL.

L'ultima cosa è che, invece di mettere il sensore = vero nel mezzo dell'URL, puoi aggiungerlo alla fine in questo modo:

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

Questo risolverà sicuramente il problema e ricorda di usare la chiave del server per Places API.

MODIFICARE

Credo che l'URL web sia cambiato negli ultimi anni. Puoi accedere alla console degli sviluppatori da qui ora: https://console.developers.google.com/apis/dashboard

  • Passa alla console degli sviluppatori - https://console.developers.google.com/ o utilizza il collegamento dai dettagli per passare direttamente alla dashboard dell'API.
  • Nella console per sviluppatori, trova Etichetta dal pannello di navigazione a sinistra
  • Seleziona progetto
  • Scegli Credenziali dal pannello di navigazione a sinistra
  • È possibile creare il tipo di credenziali dalla barra di navigazione superiore come richiesto.

Spero che questa risposta possa aiutare te e gli altri spettatori. In bocca al lupo .. :)


8
Molto importante 4) Inserisci il tuo indirizzo IP nel campo e se hai più indirizzi IP, puoi semplicemente aggiungerlo su ogni singola riga. NOTA: inserisci l'indirizzo IP solo quando vuoi usarlo per il tuo scopo di test. Altrimenti lasciare vuota la sezione Indirizzo IP.
Sheraz Ahmad Khilji

6
È corretto .. specificare solo l'indirizzo / gli indirizzi IP a scopo di test. Altrimenti, lascialo vuoto. Perché stai limitando l'app o la chiave API in modo che funzioni solo su dispositivi / app specifici.
mike20132013

1
@johnshumon Sì, immagino .. non ho aggiornato la risposta per anni. Potrebbero essere alcune nuove modifiche all'API.
mike20132013

1
Potresti anche assicurarti che anche il servizio web dell'API di Google Places sia un'API abilitata
Justin Wilson,

1
Ha lottato con questo per ore prima di scoprire che il nuovo "progetto" deve ora essere collegato a un account di fatturazione cloud di Google in modo che l'API di Google smetta di dare questi vari errori generici. La soglia può essere impostata su $ 0, quindi non ti verrà mai addebitato alcun costo se l'utilizzo supera la quota consentita.
Sparky

15
  1. Scegli la chiave
  2. Scheda Restrizioni API
  3. Scegli la chiave API
  4. Salva
  5. Scegli Limitazione applicazione -> Nessuna
  6. Salva

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


avevo pochi servizi elencati nelle restrizioni api ma non la geocodifica
Muhammad Umer

ha funzionato a meraviglia. Grazie stavo cercando di geocodificare. Ho impostato le restrizioni dell'app su nessuno come hai sottolineato e ha funzionato.
Ravi

4
Restrizioni: nessuna è abbastanza pericolosa.
Deniss M.

9
Disabilitare la sicurezza non è una soluzione!
Bartholomej

NON LASCIARE LA CHIAVE API SENZA RESTRIZIONI! Il nuovo "progetto" deve ora essere collegato a un account di fatturazione affinché l'API di Google smetta di fornire questi vari errori generici. La soglia può essere impostata su $ 0, quindi non ti verrà mai addebitato alcun costo se l'utilizzo supera la quota consentita.
Sparky

14

Oltre alla chiave API che ti è stata assegnata, Google verifica anche l'origine della richiesta in arrivo esaminando REFERRERo l'indirizzo IP. Per eseguire un esempio in curl, creane uno nuovo Server Keynella console delle API di Google . Durante la creazione, è necessario fornire l'indirizzo IP del server. In questo caso, sarà il tuo indirizzo IP locale . Dopo aver creato Server Keye inserito nella whitelist il tuo indirizzo IP, dovresti essere in grado di utilizzare la nuova chiave API in curl.

La mia ipotesi è che probabilmente hai creato la tua chiave API come una Browser Keyche non richiede di inserire nella whitelist il tuo indirizzo IP, ma invece utilizza il REFERRERtag di intestazione HTTP per la convalida. curl non invia questo tag per impostazione predefinita, quindi Google non è riuscita a convalidare la tua richiesta.


1+ Sarà necessario creare la chiave API del server per utilizzare il servizio di geocodifica di Google. Inoltre è necessario abilitare il servizio di geocodifica delle mappe di Google dalla console API di Google .. Grazie !!
Sumit Munot

Ha lottato con questo per ore prima di scoprire che il nuovo "progetto" deve ora essere collegato a un account di fatturazione cloud di Google in modo che l'API di Google smetta di dare questi vari errori generici. La soglia può essere impostata su $ 0, quindi non ti verrà mai addebitato alcun costo se l'utilizzo supera la quota consentita.
Sparky

6

L'API di Google Places non supporta attualmente le chiavi Android o iOS generate dalla console delle API di Google. Attualmente sono supportate solo le chiavi Server e Browser.


1
Interessante ... quindi come si genera una chiave da utilizzare nelle app Android o iOS?
Graham Perks

Le chiavi del browser funzioneranno su Android e iOS. Ottieni le chiavi del browser nella console delle API di Google
Nazrul Islam,

Non lo fanno senza uno sforzo extra. L'ho capito solo ieri dopo una giornata frustrante; c'è un passaggio aggiuntivo per le app: stackoverflow.com/a/58136437/434004
Graham Perks

3

Stai tentando di utilizzare una chiave API che hai limitato in un modo che non consente questa azione.

Secondo 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.

Quindi la cosa giusta da fare è creare un'altra API KEY e scegliere le restrizioni corrette per questa materia. Nel tuo caso, scegli "Indirizzi IP" (sotto "Restrizioni dell'applicazione") e usa "AGGIUNGI UN ARTICOLO" per aggiungere l'IP del tuo server. Tieni presente che lasciare un elenco vuoto non funzionerà e Google cambierà le tue restrizioni in "Nessuna".

Inoltre, non dimenticare di aggiungere le API pertinenti in "Restrizioni API" (nel tuo caso "API di geocodifica").

Un'ultima cosa: Google sta bloccando l'uso di questa API fino a quando non colleghi la tua app all'account di fatturazione Google Cloud. Quindi, se non l'hai ancora fatto, una volta ottenuta una risposta con successo, dirà che devi farlo prima (ha un pacchetto di partenza gratuito).


2

Se crei una chiave senza referer, non inserire l'indirizzo del referer


potresti per favore elaborare
Sagar Devanga

2
Durante la creazione della chiave hai come posto per aggiungere l'indirizzo del referer, controlla di aver aggiunto qualcosa lì. se aggiunto Clear it
DeadlyDroid

2

L'API di Google Place richiede l'inclusione dell'intestazione HTTP del referer quando si effettua la chiamata all'API.

Includi l'intestazione HTTP "Referer: yourdomain.com" e questo dovrebbe risolvere i problemi di risposta.


1
Sebbene questo possa rispondere alla domanda, è sempre una buona idea inserire del testo nella risposta per spiegare cosa stai facendo. Leggi come scrivere una buona risposta . Inoltre, dovresti includere del codice.
Jørgen R

Potresti fornire uno snippet
Sagar Devanga

Ecco cosa ho fatto e ha funzionato perfettamente: var options = {url: url, headers: {Referer: ' xxx.herokuapp.com '}}; request.get (opzioni, funzione (...
Florida G.

1

Anche l'API corrispondente dovrebbe essere abilitata per il progetto dato

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


1

Per l'ultima versione dell'API, per me sembra essere vero l'esatto contrario.

Quando https://maps.googleapis.com/maps/api/geocode/json?address=<address>&key=<key>ho chiamato l'URL ho ricevuto il seguente errore

Devi utilizzare una chiave API per autenticare ogni richiesta nelle API di Google Maps Platform. Per ulteriori informazioni, fare riferimento a http://g.co/dev/maps-no-account

Una volta che ho cambiato l'ordine, https://maps.googleapis.com/maps/api/geocode/json?key=<key>&address=<address>ha funzionato bene.

Nota che il messaggio di errore ricevuto sopra era il messaggio che ho ricevuto quando sono andato direttamente all'URL nel browser. Quando ho chiamato l'API da un programma software ho ricevuto una risposta HTML con fondamentalmente il seguente messaggio:

Siamo spiacenti ... ma il tuo computer o la tua rete potrebbero inviare query automatizzate. Per proteggere i nostri utenti, al momento non possiamo elaborare la tua richiesta.


Ha lottato con questo per ore prima di scoprire che il nuovo "progetto" deve ora essere collegato a un account di fatturazione cloud di Google in modo che l'API di Google smetta di dare questi vari errori generici. La soglia può essere impostata su $ 0, quindi non ti verrà mai addebitato alcun costo se l'utilizzo supera la quota consentita.
Sparky


0

Autenticazione, quote, prezzi e criteri Autenticazione Per utilizzare l'API delle indicazioni stradali, devi prima abilitare l'API e ottenere le credenziali di autenticazione appropriate. Per ulteriori informazioni, consulta Guida introduttiva a Google Maps Platform.

Quote e prezzi Esamina la pagina relativa all'utilizzo e alla fatturazione per i dettagli sulle quote e sui prezzi impostati per l'API Directions.

Politiche L'utilizzo dell'API delle indicazioni deve essere conforme alle politiche dell'API.

ulteriori informazioni: visitare: --- https://developers.google.com/maps/documentation/directions/start?hl=en_US


-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

aggiungi solo in AppDelegate come

            GMSServices.provideAPIKey("AIzaSyATaUNPUjc5rs0lVp2Z_spnJle-AvhKLHY")

e rimuovi la chiave in questo URL.

ora l'url è

https://maps.googleapis.com/maps/api/directions/json?origin=19.0176147,72.8561644&destination=28.65381,77.22897&mode=driving

-3

Disabilita sia l'API di direzione che l'API di geocodifica e riattiva.

funziona solo per 5-10 secondi e poi si disabilita automaticamente.

significa che hai solo 5-10 secondi per testare il tuo compito.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.