web-dev-qa-db-ja.com

Googleがオートコンプリートウィジェットを配置すると、リクエストごとに新しいセッションキーが生成されます

最近、GoogleはオートコンプリートリクエストにSessionTokensを導入したことの一環として、一部の課金ポリシーを更新しました。

その一部として、同じセッション内のすべてのリクエストはリクエスト内で同じトークンが送信され、Google APIによって提供されるオートコンプリートウィジェットを使用する場合は自動的に行われます。

しかし、同じセッションのすべてのリクエストに対して生成された別のトークンが表示されます。何か足りないんです、ご案内ください。これがサンプルの pluker です。キーストロークごとに異なるトークンが生成されることがわかりました。

var options = {
  types: ['(cities)']
};
  var searchBox = new google.maps.places.Autocomplete(input, options);
6
Mahesh Bongani

ページのマイコード

「」

_<!-- footer -->
<script>
// initiate search area for autocomplete of places from Google Maps Street Addresses
function initAutocomplete() {
    // define the search location box
    var searchBox = $("#searchLocation")[0];

    // initiate the autocomplete with the options on the search box
    var autocomplete = new google.maps.places.Autocomplete(searchBox, options);



};
</script>

<script src="https://maps.googleapis.com/maps/api/js?libraries=places&region=ca&language=en&key= [YOUR_API_KEY]&callback=initAutocomplete" async defer> 
_

「」

セッショントークンの説明

Googleドキュメントによると(ページの最下部にある「警告テキスト」)... https://developers.google.com/maps/documentation/javascript/places-autocomplete =

警告:新しいセッションごとに一意のセッショントークンを渡してください。複数のセッションで同じトークンを使用すると、各リクエストに個別に課金されます。オートコンプリートウィジェットはセッションを自動的に処理することに注意してください(追加の操作は必要ありません)。それでは、基本的なJavaScriptの例を見てみましょう。

これは少し紛らわしいかもしれません、それはあなたがグーグルドキュメントの命名法とこれらのことを理解しようとしているため、そしておそらくあなたが一方向でそれをやっていて、突然あなたの上司やクライアントまたは誰かがセッション/セッションを使用するように頼んだためです代わりにトークン。 AutocompleteServicesの代わりにnew google.maps.places.Autocomplete()またはこれらの行に沿って何かを行う場合、「オートコンプリートウィジェット」を使用しています。オートコンプリートウィジェットは、セッション/セッショントークン自体を処理します。

私はgoogleとgoogle docsを信頼していますが、これについてはWeb上で多くの混乱がありました。だから私は、1か月後に請求書を受け取る以外に、証拠を求めていました。参考までに-Google Clound Platform Console( https://console.cloud.google.com/google/maps-apis?pli=1 )での請求により、これがすぐに表示され、下と上のもの。

開発ツールのネットワークアクティビティを見ると、オートコンプリートサービスへの呼び出しがいくつかあることがわかります。ここでは「AutocompleteService」関数を使用しませんでした。これは、上記のコールバックでnew google.maps.places.Autocomplete()を使用して「オートコンプリートウィジェット」を使用した場合と同じ基本的な設定例です。

ページに移動すると、ライブラリへの呼び出しが最初に表示されます。以下のDev Toolsの最初のスクリーンショットをご覧ください。次に私は検索を行いましたが、うまくいきました。基本アドレス1990を入力し始めました。その後、APIに対して4つのリクエストが行われたことがわかります。入力する文字ごとに1つの要求/呼び出し。これらの要求名のそれぞれは、「AutocompleteServices.GetPredictions ...」で始まりますが、にもかかわらずI DID NOTコードでAutocompleteServicesを使用します。バックエンドでは、「オートコンプリートウィジェット」は「AutocompeleteServices」を使用しており、すべてのUI/UXの機能、機能、セッション、トークンを実行しています。これらは、以下の開発ツールのスクリーンショット1〜3にあります。次に、「PlaceServces.GetPlaceDetails」への5番目のリクエストコールが表示されます。これは、ドロップダウンから選択したときのものです。これは、以下の開発ツールのスクリーンショット4です。ヘッダーを見ると、これらのリクエストごとにいくつかのことがわかります。一番下の円で囲まれた最初のものは「トークン」です。私が言ったばかりで、Googleドキュメントは「オートコンプリートウィジェット」がセッショントークンを処理するとだけ言っていました。鋭敏な目で、この「トークン」値はすべてのリクエストで異なることがわかります。また、Googleが推奨する「バージョン4 UUID」形式ではありませんが、それは別のトピックです。ヘッダーのこの「トークン」は、セッショントークンではありません。これは、以前のバージョンのGoogleドキュメントで5年前のドキュメントに埋め込まれていますが、これはもう使用されておらず、リクエストごとに自動設定され、セッショントークンではありません。それで、「セッショントークンはどこにあるのですか?」あなたが尋ねるかもしれません。
1、2などで始まるヘッダーの他の項目は、渡される異なるセッション変数です。この場合、セッショントークンは「20年代」で、その後に「オートコンプリートウィジェット」によって作成されたバージョン4 UUIDが続きます。鋭い目で見ると、下の3つのスクリーンショットも同じであることがわかります。ページを更新した後、セッショントークンが変更されたことを示す5番目のスクリーンショットがあります。私のコードでは、それらを指定しなかったことがわかりますが、「オートコンプリートウィジェット」を使用しているため、これらは自動的に行われます。

DevTools1

DevTools_Call1

DevTools_Call2

DevTools_Call3

DevTools_Call4DevTools_Call5

8

リクエストで確認できるトークンパラメータは、場所のオートコンプリートセッショントークンではありません。このパラメータは、Googleマッププラットフォームが変更される前から存在していました。 Googleがオートコンプリートセッショントークンをどのように処理するかはわかりませんが、おそらくサーバー側で処理します。

ドキュメントには、オートコンプリートウィジェットに自動セッショントークンが実装されていると記載されています。

オートコンプリート(WebサービスおよびJavaScript)およびJavaScriptオートコンプリートウィジェットは、セッションベースの請求を使用するように更新されました。

注:ウィジェットはセッションを自動的に管理するため、JavaScriptオートコンプリートウィジェットのコードを変更する必要はありません。

ソース: https://cloud.google.com/maps-platform/user-guide/pricing-changes/

確かに、開発者コンソールで請求レポートを確認することをお勧めします。

https://console.cloud.google.com/billing/unbilledinvoice?project=YOUR_PROJECT_ID&authuser=1

このレポートでは、プレイスのオートコンプリートリクエストの請求に使用された方法を確認できます。 Product列がPlaces APIである行を見てください。Resource列は、請求にどの方法が使用されたかを示していますAutocomplete - Per RequestまたはAutocomplete - Per Session

enter image description here

自動セッションでプレイスオートコンプリートウィジェットを使用しているが、このレポートはAutocomplete - Per Requestの使用のみを示している https://console.cloud.google.com/google/maps- apis/support

6
xomena