2015-12-29 22 views
5

Sto tentando di limitare l'utilizzo della mia chiave API Android (per Google Maps Direction API) alle app Android firmate con i miei fingerprint SHA-1. La chiave funzionerà perfettamente quando non "Aggiungi nome pacchetto e impronta digitale" sotto Credenziali nella Google Developers Console. Ma quando li aggiungo viene visualizzato questo errore:Questo IP, sito o applicazione mobile non è autorizzato a utilizzare questa chiave API.

W/System.err: com.google.maps.errors.RequestDeniedException: questo IP, sito o applicazione mobile non è autorizzato a utilizzare questa chiave API. Richiesta ricevuta dall'indirizzo IP XX.XX.XXX.XXX, con referrer vuoto

La maggior parte delle risposte fornite per risolvere questo errore si riferiscono all'API di Places e la risolvono passando a una chiave API del server. Devo usare una chiave Android e voglio limitare gli utenti di quella chiave.

Punti che ho notato: 1) Google riconosce che sto utilizzando una chiave API valida. 2) Google riconosce la firma SHA-1 corretta, Google mostrerà un errore con la firma se utilizzo una chiave API non valida.

Qualsiasi aiuto sarebbe molto apprezzato!

risposta

11

Come hai trovato, qualsiasi chiave API funzionerà qui finché non è protetta, ma una chiave API Android protetta non funzionerà per l'API delle indicazioni stradali di Google Maps.

Molto semplicemente, è necessario utilizzare una chiave API del server per l'API di indicazioni stradali (o qualsiasi API del servizio Web).

Da the documentation::

Il Google Maps Indicazioni API funziona solo con una chiave server.

Il motivo è che queste API del servizio Web erano originariamente pensate per essere utilizzate su siti Web, non in app Android.

Inoltre, l'unico modo per proteggere una chiave server è con un indirizzo IP, quindi non c'è modo di farlo lato client.

La raccomandazione ufficiale di Google è quella di utilizzare un server proxy a cui l'app invia richieste e inoltrare la richiesta API Directions dal server proxy.

vedo qui (Questo è specifico per il webservice API Places, ma è valida per una qualsiasi delle API webservice): https://groups.google.com/forum/#!topic/google-places-api/SmujrL-pDpU

risposta da Google dipendente:

Alexey,

Anything lato client memorizzato è compromissibile, anche con offuscamento, si sta solo facendo un po 'più lento per un hacker dedicato per l'accesso .

vorrei suggerire di impostare l'applicazione per inviare i vostri luoghi richieste senza l'API Key a un server proxy per ricevere la richiesta, appendere l'API Key alla fine della richiesta, inviare la richiesta, e poi ricevere e restituire la risposta dalla richiesta all'applicazione .

Cheers,

Chris

+2

Grazie per la tua risposta. Anche se trovo ancora difficile credere che Google non ti permetta di usare una chiave API più sicura su una chiave che non ha sicurezza. – BrianMiz