21

このチュートリアルで説明されているように、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フィンガープリントを使用してAndroidAPIキーを作成しました。コンソールからMapsandPlacesAPIをオンにしました。割り当てを超えていません。

それらすべてとそれはまだ私にREQUEST_DENIEDを与えます

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

ありがとう!

4

9 に答える 9

94

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

私はこれについて髪を引き裂いていた、それは私には意味がなかった..私はiOS / Androidアプリを作っていたので、私はiOS/Androidキーを作った... 間違った。

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

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

1.https://cloud.google.com/console#/projectにログインします

プロジェクト名を選択し、[ APIと認証]>[API ]に移動します

PlacesAPIがオンになっていることを確認してください。Places-APIが機能するためにオンにする必要があるのはこれだけです。 ここに画像の説明を入力してください

2.クレデンシャルに移動します

[パブリックAPIアクセス]の下の[新しいキーの作成]をクリックします ここに画像の説明を入力してください

3.ブラウザキーを選択します ここに画像の説明を入力してください

4. [作成]、[その他なし]をクリックします

HTTPリファラーボックスは空のままにします。

ここに画像の説明を入力してください

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を使用できます。

于 2013-12-27T07:40:20.730 に答える
28

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

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

于 2013-02-07T05:51:19.260 に答える
5

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

APIキーの保存

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

したがって、APIキーを保存し、PlacesAPIサービスをプロキシするWebアプリケーションを構築する必要があります。AndroidアプリとプロキシWebサービス間の通信を保護するには、プロキシWebサービスに対するユーザー認証が必要です。Androidアプリは、ユーザーの資格情報を安全に保存してWebサービスに渡すことができます。または、ユーザーはAndroidWebViewを介してWebアプリにログインできます。

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

于 2013-08-02T01:42:57.050 に答える
1

google cloud platform console> Credentialsに移動し、 YOUR_API_KEYを選択して編集をクリックします>アプリケーションの制限> noneオプションを選択>保存します。

アプリケーションの制限からAndroidアプリのオプションを選択した場合、Googleは例外REQUEST_DENIEDを除いてプレイスAPIを拒否します。

于 2020-05-10T09:52:43.867 に答える
0

Google devコンソールで、「PlacesAPI」と「PlacesAPIforAndroid」の両方を見つけることができるはずです。

開発コンソール検索

必ず「PlacesAPIforAndroid」を使用してください

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

于 2015-03-31T08:42:06.640 に答える
0

私は同じ問題を抱えていました、私は去ることによってそれを修正します

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

ブラウザキーで空

于 2016-02-24T23:00:43.503 に答える
0

私はまだ新しいのでコメントできませんが、Moeの答えに光を当てるために、次の手順でURLクエリ(ルートの方向、Volleyを使用)に関する同様のGoogleMapsAPIの問題を解決しました。

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

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

Androidに限定されていない最初のキーだけで動作すると思います。

于 2017-07-17T18:03:22.537 に答える
0

Google Cloud Console内で、PlacesandActivateと入力します。APIキーを作成し、通常どおりにAndroidStudioアプリに挿入します。それだけです。

于 2019-09-09T02:19:31.173 に答える
0

私も同じ問題を抱えていました。私にとって重要なのは、プロジェクトでの請求を有効にすることでした。私はまだ「Android用アプリケーション」の制限を使用しています。お支払い方法を設定した後、PlacesApiが機能し始めました。

Places SDK for Androidを使用する前に、次の手順を実行してください。

  • 「APIキーの取得」ガイドに従って、APIキーを取得、追加、および制限します。
  • 各プロジェクトで請求を有効にします。
  • プロジェクトごとにPlacesAPIを有効にします。

そちらをご覧ください。

無料ではないため、GooglePlacesAPIの課金プランも確認してください。

于 2020-02-04T18:06:03.437 に答える