wake-up-neo.com

Die Google Places-API-Anforderung wurde für die automatische Autovervollständigung von Android abgelehnt, selbst mit der richtigen API-Taste

Ich versuche, ein Autocomplete-Feld zu erstellen, in dem die vom Benutzer angegebenen Städte abgerufen werden sollen. Dazu verwenden Sie das Google Places-API wie in diesem Tutorial beschrieben: https://developers.google.com/places/training/autocomplete-Android

Sie haben diese Frage wahrscheinlich schon so oft vorgefunden, aber keine der Antworten hat mir geholfen. Hier sind die Dinge, die Sie wissen sollten:

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

Bitte antworten Sie nicht, indem Sie sagen, dass Sie den API-Schlüssel durch Ihren eigenen ersetzt haben, und es hat funktioniert - der API-Schlüssel, der dort hingeht, muss Android-spezifisch sein und funktioniert nicht über einen Browser. 

Also habe ich den Android-API-Schlüssel mit dem SHA1-Fingerabdruck erstellt, der aus dem Keystore stammt, mit dem ich die App signiert habe. Ich habe Maps- und Places-APIs von der Konsole aus aktiviert. Das Kontingent wird nicht überschritten. 

All das und es gibt mir immer noch REQUEST_DENIED 

Was ich nicht erwähnt habe ist, dass ich O2Auth aktiviert habe - ändert das etwas? Sollte es nicht so einfach sein, den API-Schlüssel in der App zu platzieren? 

Vielen Dank! 

18
Stefan Malacu

Die Google Places-API unterstützt derzeit keine Android- oder iOS-Schlüssel, die von der Google APIs Console generiert werden. Derzeit werden nur Server- und Browserschlüssel unterstützt.

Wenn Sie diesen Support anfordern möchten, reichen Sie eine Places API - Feature Request ein. 

26
Chris Green

Obwohl dies beantwortet wurde, könnte die Community meiner Meinung nach bessere Ergebnisse erzielen.

Ich habe mir die Haare aus dem Haar gerissen, es hat einfach keinen Sinn für mich gemacht .. Ich habe eine iOS/Android-App gemacht, also habe ich einen iOS/Android-Schlüssel gemacht ... Falsch.

Mit der Google Places-API wird Ihre Bundle-ID nicht berücksichtigt.

Was Sie wirklich tun möchten, ist folgendes: (Ich verwende die neue Benutzeroberfläche)

1. Melden Sie sich an https://cloud.google.com/console#/project

Wählen Sie Ihren Projektnamen aus und gehen Sie dann zu APIs & Auth> APIs

Stellen Sie sicher, dass Places API aktiviert ist. Dies ist das einzige, was aktiviert werden muss, damit die Places-API funktioniert. enter image description here

2. Gehe in Anmeldeinformationen

Klicken Sie unter Öffentlicher API-Zugriff Auf CREATE NEW KEY.enter image description here

3. Wählen Sie BROWSER KEY enter image description here

4. Klicken Sie auf Erstellen, sonst nichts

Lassen Sie das Feld HTTP Refer leer.

enter image description here

5. Verwenden Sie den hier generierten Schlüssel

Mit diesem Schlüssel kann jeder Benutzer von jedem Gerät aus über Ihr Entwickler-Login auf die API zugreifen. Sie können es hier ausprobieren: (Ersetzen Sie unbedingt YOUR_KEY_HERE mit Ihrem generierten Schlüssel).

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

6. Genießen

Jetzt können Sie diese URL oben in Ihrem Android/iOS-Gerät verwenden.

93
Moe

https://developers.google.com/places/training/autocomplete-Android

Speichern Sie Ihren API-Schlüssel

Obwohl der obige Code zeigt, wie direkt Zwischen einer Android-App und dem Places Autocomplete-Dienst kommuniziert werden kann, sollten Sie Ihren Places-API-Schlüssel nicht mit Ihrer App speichern.

Sie sollten daher eine Webanwendung erstellen, die Ihren API-Schlüssel Speichert und die Places-API-Dienste weitergibt. Um die Kommunikation Zwischen Ihrer Android-App und dem Proxy-Webdienst zu sichern, sollten Sie eine Benutzerauthentifizierung für Ihren Proxy-Webdienst anfordern. Ihre Android-App kann Benutzeranmeldeinformationen sicher speichern und an Ihren Web-Service übergeben, oder . Der Benutzer kann sich über eine Android-WebView bei Ihrer Web-App anmelden.

Für den letzteren Ansatz sollte Ihre Web-App ein Authentifizierungs-Token für Benutzer Erstellen und an Ihre Android-App zurückgeben, und Ihre Android-App sollte Dieses Token anschließend an Ihren Proxy-Webdienst übergeben.

4
Arc

In der Google dev-Konsole sollten Sie "Places API" und "Places API für Android" finden.

dev console search

Stellen Sie sicher, dass Sie "Places API für Android" verwenden.

Aus irgendeinem Grund ist "Places API für Android" in der API-Liste ausgeblendet, kann aber über die Suche aufgerufen werden.

0
Singed

Ich hatte das gleiche Problem, ich repariere es, indem ich ging 

Anforderungen von diesen HTTP-Referrern (Websites) annehmen (optional)

im Browser Schlüssel Leer

0
Mina Fawzy

Ich bin noch neu, daher kann ich nicht kommentieren. Um jedoch ein wenig Licht auf Moes Antwort zu werfen, habe ich einige ähnliche Google Maps API-Probleme in Bezug auf URL-Abfragen (für Anweisungen mit Volley) mit den folgenden Schritten behoben:

  1. Holen Sie sich einen Android-API-Schlüssel (einschließlich Google Maps Directions API in meinem Fall).
  2. Holen Sie sich den "Server" -API-Schlüssel (der anscheinend heutzutage mit einer Schlüsseleinschränkung für "HTTP-Referrer" erstellt wurde - er wird nur zur Ausgabe von URL-Abfragen über HTTP verwendet).
  3. Speichern Sie den Android-API-Schlüssel als meta-data-Tag im application-Tag in AndroidManifest.xml mit Android:name="com.google.Android.maps.v2.API_KEY" und Android:value als Schlüssel. Dies wird für die direkte Interaktion mit der Maps-API verwendet (minus URL-Abfragen).
  4. Verwenden Sie bei der Ausgabe von URL-Abfragen den Server-API-Schlüssel.

Ich bin nicht sicher, ob dies auch für URL-Abfragen für die Places-API gilt, ob Sie nur den Server-API-Schlüssel benötigen oder ob es eine bessere Lösung gibt. Dies hat jedoch für mich funktioniert.

Ich kann mir vorstellen, dass es nur mit dem ersten Schlüssel funktioniert - der nicht auf Android beschränkt ist.

0
John Rattz

Geben Sie in der Google Cloud Console Places ein und aktivieren Sie sie. Erstellen Sie einen API-Schlüssel und fügen Sie ihn wie gewohnt in Ihre Android= Studio App ein. Das war's.

0