Die Google Places-API-Anfrage wurde für die automatische Vervollständigung von Android abgelehnt, selbst wenn der richtige API-Schlüssel verwendet wurde

Ich versuche, ein Autocomplete-Feld zu erstellen, das Städte mithilfe des Google Places-API, wie in diesem Lernprogramm beschrieben, abrufen soll, wie der Nutzer tippt: https://developers.google.com/places/training/autocomplete-android

Wahrscheinlich hast du diese Frage schon viele Male zuvor gefunden, 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 dorthin geht, muss Android-spezifisch sein und wird nicht von einem Browser funktionieren.

Also habe ich den Android-API-Schlüssel mithilfe des SHA1-Fingerabdrucks erstellt, der aus dem Schlüsselspeicher 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 diese und es gibt mir immer noch REQUEST_DENIED

Was ich nicht erwähnt habe ist, dass ich O2Auth aktiviert habe – ändert sich das? Sollte es nicht so einfach sein wie den API-Schlüssel in die App zu stecken?

Vielen Dank!

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

    Wenn Sie diese Unterstützung anfordern möchten, reichen Sie bitte eine Places API – Feature Request ein .

    Obwohl dies beantwortet wurde, denke ich, die Gemeinschaft könnte es besser machen.

    Ich habe mir dabei die Haare ausgerissen, es hat mir einfach keinen Sinn gemacht … Ich habe eine iOS / Android App gemacht, also habe ich einen iOS / Android Key gemacht … Falsch.

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

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

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

    Wählen Sie Ihren Projektnamen und gehen Sie dann in die APIs & Auth> APIs

    Stellen Sie sicher, dass die Places-API aktiviert ist. Dies ist das einzige, was aktiviert werden muss, damit die Places-API funktioniert. Bildbeschreibung hier eingeben

    2. Gehen Sie in Anmeldeinformationen

    Klicken Sie unter Public API Access auf CREATE NEW KEY Bildbeschreibung hier eingeben

    3. Wählen Sie den Browser-Schlüssel Bildbeschreibung hier eingeben

    4. Klicken Sie auf Erstellen, nichts anderes

    Lassen Sie das HTTP-Refer-Feld leer.

    Bildbeschreibung hier eingeben

    5. Verwenden Sie den hier generierten Schlüssel

    Mit diesem Schlüssel können ALLE Benutzer von jedem Gerät aus über Ihr Entwickler-Login auf die API zugreifen. Sie können es hier ausprobieren: (Ersetzen Sie YOUR_KEY_HERE durch Ihren 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 auf Ihrem Android / iOS-Gerät verwenden.

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

    Speichern Sie Ihren API-Schlüssel

    Obwohl der obige Code veranschaulicht, wie Sie direkt zwischen einer Android-App und dem Places-Autocomplete-Dienst kommunizieren, sollten Sie den Places-API-Schlüssel nicht in Ihrer App speichern.

    Sie sollten daher eine Webanwendung erstellen, die Ihren API-Schlüssel speichert und die Places-API-Dienste als Proxy verwendet. Um die Kommunikation zwischen Ihrer Android-App und dem Proxy-Webdienst zu sichern, sollten Sie eine Benutzerauthentifizierung für Ihren Proxy-Webdienst benötigen. Ihre Android-App kann Anmeldeinformationen sicher speichern und an Ihren Webdienst weitergeben, oder der Benutzer kann sich über ein Android WebView bei Ihrer Webanwendung anmelden.

    Für den letzteren Ansatz sollte Ihre Webanwendung ein Benutzerauthentifizierungstoken erstellen und an Ihre Android-App zurückgeben, und Ihre Android-App sollte dieses Token anschließend an Ihren Proxy-Webdienst weitergeben.

    In der Google-Entwicklerkonsole sollten Sie sowohl “Places API” als auch “Places API for Android” finden können.

    dev-Konsolensuche

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

    Aus irgendeinem Grund ist “Places API for Android” in der API-Liste verborgen, kann aber über die Suche aufgerufen werden.

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

    Akzeptieren Sie Anforderungen von diesen HTTP-Referrern (Websites) (optional)

    im Browserschlüssel Leer

    Ich bin noch neu, daher kann ich nichts dazu sagen, aber um Moes Antwort etwas aufzuhellen, habe ich einige ähnliche Google Maps-API-Probleme in Bezug auf URL-Abfragen (für Wegbeschreibungen, Volley) mit den folgenden Schritten getriggers:

    1. Holen Sie sich den Android API Key (einschließlich der Google Maps Directions API in meinem Fall).
    2. Holen Sie sich “Server” API Key (der anscheinend durch eine Schlüsseleinschränkung von “HTTP Referrers” in diesen Tagen erstellt wurde – wirklich, er wird nur verwendet, um URL-Anfragen über HTTP auszugeben).
    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 Google Maps-API verwendet (ohne URL-Abfragen).
    4. Verwenden Sie den Server-API-Schlüssel bei der Ausgabe von URL-Abfragen.

    Ich bin mir 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, aber dies funktionierte für mich.

    Ich stelle mir vor, dass es nur mit dem ersten Schlüssel funktioniert – der nicht auf Android beschränkt ist.