2015-12-29 3 views
5

Ich versuche, die Verwendung meines Android-API-Schlüssels (für Google Maps Direction API) auf Android-Apps zu beschränken, die mit meinen SHA-1-Fingerabdrücken signiert sind. Der Schlüssel funktioniert einwandfrei, wenn ich "Paketname und Fingerabdruck hinzufügen" nicht unter den Anmeldeinformationen in der Google Developers Console hinzufüge. Aber wenn ich sie addiere, taucht dieser Fehler auf:Diese IP-Adresse, Website oder mobile Anwendung ist nicht zur Verwendung dieses API-Schlüssels berechtigt.

W/System.err: com.google.maps.errors.RequestDeniedException: Diese IP, Website oder mobile Anwendung ist nicht berechtigt, diesen API-Schlüssel zu verwenden. Anfrage erhalten von IP-Adresse XX.XX.XXX.XXX, mit leerem Referrer

Die Mehrheit der Antworten, die gegeben werden, um diesen Fehler zu beheben, sind für die Places API und lösen sie, indem sie zu einem Server API Schlüssel wechseln. Ich brauche einen Android-Schlüssel und möchte die Benutzer dieses Schlüssels begrenzen.

Punkte, die ich bemerkte: 1) Google erkennt erkennen, dass ich einen gültigen API-Schlüssel verwende. 2) Google erkennt die korrekte SHA-1-Signatur, Google zeigt einen Fehler mit der Signatur an, wenn ich einen ungültigen API-Schlüssel verwende.

Jede Hilfe wäre sehr willkommen!

Antwort

11

Wie Sie festgestellt haben, funktioniert jeder API-Schlüssel, solange er nicht gesichert ist, aber ein gesicherter Android-API-Schlüssel funktioniert nicht für die Google Maps Directions-API.

Ganz einfach müssen Sie einen Server-API-Schlüssel für die Directions-API (oder eine der Webservice-APIs) verwenden.

Von the documentation::

Die Google Maps Directions API wird nur mit einem Server-Schlüssel arbeiten.

Der Grund dafür ist, dass diese Webservice-APIs ursprünglich für die Verwendung auf Websites gedacht waren, nicht für Android-Apps.

Darüber hinaus ist die einzige Möglichkeit, einen Serverschlüssel mit einer IP-Adresse zu sichern, daher gibt es keine Möglichkeit, dies auf der Clientseite zu tun.

Die offizielle Empfehlung von Google ist die Verwendung eines Proxy-Servers, an den die App Anfragen stellt, und die Anforderung der Directions-API vom Proxy-Server.

Siehe hier (Dies ist spezifisch für die Orte Webservice-API, aber es ist für eine der Webservice-APIs gültig): https://groups.google.com/forum/#!topic/google-places-api/SmujrL-pDpU

Antwort von Google-Mitarbeiter:

Alexey,

Anything gespeicherte Client-Seite ist kompromittierbar, auch mit Verschleiern, Sie machen es nur etwas langsamer für einen dedizierten Hacker zu Zugriff.

Ich würde vorschlagen, dass Sie Ihre Anwendung einrichten, um Ihre Orte -Anforderungen ohne API-Schlüssel an einen Proxy-Server die Anforderung empfangen zu senden, die API-Schlüssel an das Ende der Anforderung anhängen, die Anfrage senden, und dann Empfangen und senden Sie die Antwort aus der Anfrage an Ihre Anwendung.

Cheers,

Chris

+2

Vielen Dank für Ihre Antwort. Allerdings kann ich immer noch nicht glauben, dass Google Ihnen einen sichereren API-Schlüssel über einen Schlüssel ohne Sicherheit zulässt. – BrianMiz

Verwandte Themen