web-dev-qa-db-ja.com

AndroidオートコンプリートのためのGoogle Places APIリクエストが拒否されました。正しいAPIキーを使用しても

このチュートリアルで説明されているGoogle Places APIを使用して、ユーザータイプとして都市を取得するオートコンプリートフィールドを作成しようとしています: https://developers.google.com/places/training/autocomplete- Android

この質問は、私と同じように何度も見たことがあると思いますが、どの回答も役に立ちませんでした。知っておくべきことは次のとおりです。

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

APIキーを自分のものに置き換えて機能したと言って返信しないでください。そこに移動するAPIキーはAndroid固有である必要があり、ブラウザからは機能しません。

アプリに署名したキーストアから取得したSHA1フィンガープリントを使用してAndroid APIキーを作成しました。コンソールからMaps and Places APIをオンにしました。割り当て量を超えていません。

それらすべてとそれでも私にREQUEST_DENIEDを与えます

私が言及しなかったのは、O2Authをアクティブにしたということです-それは何かを変更しますか?アプリにAPIキーを配置するほど簡単ではないでしょうか?

ありがとう!

19
Stefan Malacu

Google Places APIは現在AndroidまたはGoogle APIコンソールから生成されたiOSキーをサポートしていません。現在サポートされているのはサーバーキーとブラウザキーのみです。

このサポートをリクエストする場合は、 Places API-機能リクエスト を提出してください。

28
Chris Green

これは答えられましたが、コミュニティはもっとうまくいくと思います。

私はこれについて髪をちぎっていました、それは私には意味がありませんでした。私はiOS/Androidアプリを作成していたので、iOS/Androidキーを作成しました...

GoogleのPlaces APIでは、バンドル識別子は考慮されていません。

あなたが本当にやりたいことはこれです:(私は新しいユーザーインターフェースを使っています)

1。ログイン https://cloud.google.com/console#/project

プロジェクト名を選択し、API's&Auth> APIsに移動します

Places APIがオンになっていることを確認してください。これは、Places-APIを機能させるためにオンにする必要がある唯一のものです。 enter image description here

2。資格情報に移動します

Public API Accessの下にあるCREATE NEW KEYをクリックします。 enter image description here

3。 BROWSER KEYを選択します enter image description here

4。 [作成、それ以外はなし]をクリックします

HTTP参照ボックスを空のままにします。

enter image description here

5。ここで生成されたキーを使用してください

このキーを使用すると、すべてのユーザーが任意のデバイスから開発者ログインを介してAPIにアクセスできます。あなたはそれをここで試すことができます:(YOUR_KEY_HEREを生成されたキーに置き換えてください)

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

6。お楽しみください

これで、上記のURLをAndroid/iOSデバイスで使用できます。

94
Moe

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

APIキーを保存する

上記のコードは、Androidアプリとプレイスオートコンプリートサービスの間で直接通信する方法を示していますが、アプリにPlaces APIキーを保存しないでください。

したがって、APIキーを保存し、Places APIサービスをプロキシするウェブアプリケーションを構築する必要があります。 AndroidアプリとプロキシWebサービスの間の通信をセキュリティで保護するには、プロキシWebサービスへのユーザー認証を要求する必要があります。Androidアプリは安全に保存できますユーザーの資格情報をWebサービスに渡すか、ユーザーがAndroid WebView。

後者のアプローチの場合、Webアプリはユーザー認証トークンを作成してAndroidアプリに返し、その後、AndroidアプリはこのトークンをプロキシWebサービス。

4
Arc

Google開発コンソールでは、「Places API」と「Places API for Android」の両方を見つけることができるはずです

dev console search

必ず「Places API for Android」を使用してください

なんらかの理由で、「Places API for Android」はAPIリストで非表示になっていますが、検索を使用してアクセスできます。

0
Singed

私は同じ問題を抱えていました、私は去ってそれを修正しました

これらのHTTPリファラー(Webサイト)からの要求を受け入れる(オプション)

ブラウザのキーが空

0
Mina Fawzy

私はまだ新しいのでコメントできませんが、Moeの答えを明らかにするために、次の手順でURLクエリ(Volleyの使用について)に関する同様のGoogle Maps APIの問題をいくつか解決しました:

  1. Android APIキー(私の場合はGoogle Maps Directions APIを含む))を取得します。
  2. 「サーバー」APIキーを取得します(最近の「HTTPリファラー」のキー制限を使用して作成されているようです-実際、これはHTTP経由でURLクエリを発行するためにのみ使用されます)。
  3. Android APIキーをmeta-dataタグ内のapplicationタグ内のAndroidManifest.xmlAndroid:name="com.google.Android.maps.v2.API_KEY"およびAndroid:valueをキーとして。これは、Maps APIとの直接のやり取り(URLクエリを除く)に使用されます。
  4. URLクエリを発行するときは常にサーバーAPIキーを使用します。

これがPlaces APIのURLクエリにも当てはまるのか、サーバーAPIキーだけが必要なのか、またはより良い解決策があるのか​​はわかりませんが、これでうまくいきました。

私はそれが最初のキーだけで動作することを想像します-Androidに制限されていないキー。

0
John Rattz

Google Cloud Console内で「Places」と入力してアクティブにします。 APIキーを作成し、通常どおりにAndroid Studio Appに挿入します。それだけです。

0

私も同じ問題を抱えていました。私にとって重要なのは、プロジェクトの課金を有効にすることでした。 「Applications for Android」の制限をまだ使用しています。支払い方法を設定した後、Places Apiは機能し始めました。

Places SDK for Androidを使用する前に、次のことを行います。

  • APIキーの取得、追加、制限については、APIキーの取得ガイドに従ってください。
  • プロジェクトごとに課金を有効にします。
  • プロジェクトごとにPlaces APIを有効にします。

ご覧ください あり

また、Google Places APIは無料ではないので、料金プランも確認してください。

0
Kamil Z