web-dev-qa-db-ja.com

APIキーブラウザーAPIキーは、このAPIで使用する場合、リファラーの制限を持つことはできません

ジオコーディングをプログラムしようとしています。 APIキーを作成しましたが、それをWebサイトのコードに追加しても何も得られませんが、APIを使用しない場合はすべてうまくいきます。送信するとき:

https://maps.googleapis.com/maps/api/geocode/json?address=".$adres."&key=KLUCZ_XXX

私は応答を受け取ります:

Browser API keys cannot have referer restrictions when used with this API.

私が使用する場合:

https://maps.googleapis.com/maps/api/geocode/json?address=".$adres" 

結果は正しいですが、クエリの数は1日あたりに制限されています。

主要な制約:照会HTTP(Web)-照会を想起させるドメインに設定します。インターフェースGoogle Maps Geocoding APIが有効になっています。

APIキーは、動作するために他の場所でもアクティブ化する必要がありますか?

34
Damian

APIコールサーバー側を作成しているようです。今日、この問題に出くわしました。 APIキーにリファラー制限を設定したため、Geocoding APIなどのWebサービスAPIを使用したブラウザーでの実行に制限されます。リクエストヘッダーにリファラーを手動で設定しても、私にとってはうまくいきませんでした。このページで他のWebサービスAPIを見つけることができます: https://developers.google.com/maps/web-services/

重要:リファラーの制限があるAPIキーを持つWebサービスAPIのいずれかを使用している場合、「このAPIで使用する場合、APIキーはリファラーの制限を持つことができません」というエラーメッセージで失敗します。サーバー制限の使用に切り替える必要があります。

サーバー側を使用するには、別のキーを作成する必要があります。制限をブラウザー制限からサーバー制限に変更できますブラウザのリファラーの代わりに、IPアドレスを使用してアクセスを制限します。

Maps APIの次のセクションを参照してくださいFAQキーの種類をサーバーの制限されたキーに切り替える: https://developers.google.com/maps/faq#switch-key-type

または、ブラウザキーとジオコードクライアント側(JavaScript)を引き続き使用して、結果をajax経由でバックエンドに返すこともできます。

56
Raymond

サーバー側のジオコーディングがオプションでない場合は、 Google Javascript API のジオコーダーを使用する必要があります。そのAPIにHTTPリファラーの制限を設定できます。

Google自身は 動的ジオコーディング用の非Javascript Geocoder APIを避けるため

このサービスは通常、地図上にアプリケーションコンテンツを配置するための静的(事前に知られている)アドレスをジオコーディングするために設計されています。このサービスは、ユーザー入力にリアルタイムで応答するようには設計されていません。動的なジオコーディング(たとえば、ユーザーインターフェイス要素内)については、Maps JavaScript APIクライアントジオコーダーやGoogle PlayサービスのLocation APIのドキュメントを参照してください。

0
Slash