2013-02-01 4 views
18

このチュートリアルの説明に従ってGoogle Places APIを使用して都市を取得するオートコンプリートフィールドを作成しようとしています: https://developers.google.com/places/training/autocomplete-android右のAPIキーであってもAndroidオートコンプリートのGoogleプレイスAPIリクエストが拒否されました

私はこれまで何度もこの質問を見つけたでしょうが、答えが私を助けませんでした。ここであなたが知っておくべきものは以下のとおりです。

URLは、あなた自身でAPIキーを交換し、それが働いたと言って返信しないでください https://maps.googleapis.com/maps/api/place/autocomplete/json?sensor=false&key=myKey&components=country:ro&input=whatTheUserTypes

ある - Androidの特定がなければならない行くAPIキーをブラウザからは動作しません。

私はアプリに署名したキーストアから取得したSHA1フィンガープリントを使用してAndroid APIキーを作成しました。 コンソールからMaps and Places APIを有効にしました。 クォータを超えていません。

すべてのものと、それはまだ私は言及しなかった何を私にREQUEST_DENIED

を与えるが、私がO2Auth有効にしていることである - それは何も変わりませんか?アプリにAPIキーを入れるのと同じくらい単純ではありませんか?

ありがとうございます!

答えて

26

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

あなたはこのサポートを依頼したい場合は、Places API - Feature Requestを提出してください。上記のコードは、直接 Androidアプリや場所オートコンプリートサービスとの間を通信する方法を示していますが、あなたは あなたとあなたの場所APIキーを格納してはならない重要な

あなたのAPIを保存する

+0

もう一度、この問題について多くの光を当てました ドキュメントのどこかに記載されていましたか? Autocompleteチュートリアルでは、APIキーをプロキシサーバーに保存する必要があると述べていますが、多くの人がアプリから直接使用することができると考えています。 –

+0

Places APIのドキュメントには記載されていませんが、[APIコンソールヘルプ](https://developers.google.com/console/help/#generatingdevkeys)に記載されています:_ "AndroidキーはいくつかのAPIによってサポートされています "_。 –

+0

と私は私のウェブブラウザからテストするだけなら、何かチャンスはありませんか? – andi

4

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

アプリ。

そのため、あなたのAPIキー とプロキシ場所APIサービスを格納したWebアプリケーションを構築する必要があります。 Androidアプリとプロキシウェブサービスの間に通信 を安全にするためには、プロキシウェブサービスへのユーザ認証 が必要です。あなたのAndroidアプリは ユーザーの資格情報を安全に保存してWebサービスに渡すことができます。 ユーザーはAndroid WebView経由でWebアプリにログインできます。

あなたのWebアプリケーションは、ユーザーの 認証トークンを作成してAndroidアプリに返す必要があります。その後Androidアプリは がこのトークンをプロキシWebサービスに渡す必要があります。

+0

これは主要なセキュリティに関連しており、OPの質問 –

+1

を解決するものではありません。これは質問に答えます。クイックフィックスではブラウザキーを使用してリファラーを許可しますが、ドキュメントには方法が記載されています。 – overlii

+0

この回答は本当に高く評価されるべきです。 APIキーをデバイスで直接使用するための回避策が示されていますが、簡単に検索できるため、デバイスに直接資格情報を保存することは推奨されません。 – markquezada

93

これが回答されているが、私は社会がもっとうまくできると思います。

私はiOS/Androidアプリを作っていたので、私はiOS/Androidキーを作っていました。 間違っています。

GoogleのプレイスAPIでは、バンドルIDは考慮されていません。

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

ログインし

https://cloud.google.com/console#/projectにあなたのプロジェクト名を選択し、APIの&に入りますAuth> API

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

2.

クリックして公開APIアクセス enter image description here

3. 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.

今、あなたはあなたのAndroid/iOS搭載デバイスで上記のようURLを使用することができますをお楽しみください。 。

Googleのdevのコンソールで
+0

あなたからの大きな助け!!!!! – user1673099

+0

@Arcによって与えられた答えは、正しい生産技術ではなく、「安全でないクイックフィックス」のように聞こえます。しかし、私はまだよくわからない。通常のウェブブラウザで使用されているブラウザキーは、盗難や再利用に強く晒されています(REFERRERヘッダを偽装するのは簡単です)。 Andriod/iOSアプリで使用されるブラウザキーは、GoogleへのSSL接続でアプリバイナリやMIM攻撃を盗み出すのがずっと難しくなります。 Googleがこれをあまりにも明白に残すのは変だ。 – mpoisot

+0

奇妙ですが、うまくいきます。私は彼らのドキュメントでこれを明示的に参照することはできません。ありがとうございました。 – elbuild

0

、あなたは "場所API" および "Androidのための場所API"

dev console search

"アンドロイド用の場所API" を使用してください

の両方を見つけることができるはずです何らかの理由で、「Android向けPlaces API」はAPIリストには表示されませんが、検索を使用してアクセスできます。

+0

SHA1の指紋+パッケージ名を使用してAndroid用Google Places APIを保護しており、アプリからAPIへのコールを直接実行していると、あなたはRequest_Deniedを取得していませんか?私はこれをして、依然としてRequest_Deniedを見ます。 – Baker

0

私は同じ問題を持っていた、私は私が空ブラウザキーで

0

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

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

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

私はあなただけのサーバーAPIキーが必要な場合、これはまた、場所API用のURLクエリに適用される、またはよりよい解決策がある場合、これは私のために働いていたかどうかわからないです。

私はそれがAndroidに限られていない最初の鍵だけで動作すると想像します。

関連する問題