Mã thông báo phiên nhóm các giai đoạn truy vấn và lựa chọn của một cụm từ tìm kiếm tự động hoàn thành của người dùng thành một phiên riêng biệt cho mục đích thanh toán.
Tạo mã thông báo phiên
Người dùng chịu trách nhiệm tạo mã thông báo phiên riêng biệt cho mỗi phiên.
Google khuyên bạn nên sử dụng UUID phiên bản 4.
Ví dụ:
Khi người dùng nhập một cụm từ tìm kiếm, yêu cầu tự động hoàn thành sẽ được gọi sau mỗi vài lần nhấn phím (không phải cho mỗi ký tự) và một danh sách kết quả có thể có sẽ được trả về. Khi người dùng chọn một mục trong danh sách kết quả, lựa chọn đó được tính là một yêu cầu và tất cả các yêu cầu được đưa ra trong quá trình tìm kiếm sẽ được gộp lại và tính là một yêu cầu duy nhất. Nếu người dùng chọn một địa điểm, thì truy vấn tìm kiếm sẽ được cung cấp miễn phí và bạn chỉ phải trả phí cho yêu cầu dữ liệu Địa điểm. Nếu người dùng không đưa ra lựa chọn trong vòng vài phút kể từ khi bắt đầu phiên, thì chỉ cụm từ tìm kiếm mới bị tính phí.
Hãy xem xét luồng sự kiện này theo góc độ của một ứng dụng.
Người dùng bắt đầu nhập một cụm từ tìm kiếm để tìm "Paris, Pháp".
Khi phát hiện thấy dữ liệu đầu vào của người dùng, ứng dụng sẽ tạo một mã thông báo phiên mới, "Mã thông báo A".
Khi người dùng nhập, API sẽ đưa ra yêu cầu tự động hoàn thành sau mỗi vài ký tự, hiển thị một danh sách kết quả tiềm năng mới cho từng ký tự:
"P"
"Par"
"Paris"
"Paris, Fr"
Khi người dùng chọn:
Tất cả các yêu cầu phát sinh từ truy vấn đều được nhóm lại và thêm vào phiên do "Mã thông báo A" đại diện, dưới dạng một yêu cầu duy nhất.
Lựa chọn của người dùng được tính là một yêu cầu Chi tiết về địa điểm và được thêm vào phiên do "Mã thông báo A" đại diện.
Phiên kết thúc và ứng dụng loại bỏ "Mã thông báo A".
Để biết thêm thông tin về cách tính phí cho các yêu cầu Tự động hoàn thành, hãy xem phần Mức sử dụng và phí.
[null,null,["Cập nhật lần gần đây nhất: 2025-08-30 UTC."],[[["\u003cp\u003eSession tokens associate autocomplete search queries and selections for billing, ensuring accurate charges based on user interactions.\u003c/p\u003e\n"],["\u003cp\u003eEach new search session requires a unique, user-generated token, ideally a version 4 UUID, to track related requests.\u003c/p\u003e\n"],["\u003cp\u003eAutocomplete requests during a search are grouped and billed as a single request when the user makes a selection, charging only for Place data if a place is chosen.\u003c/p\u003e\n"],["\u003cp\u003eIf no selection is made within a few minutes, only the search query is billed, attributing costs to the initial search activity.\u003c/p\u003e\n"],["\u003cp\u003eSession tokens are project-specific, allowing reuse across different Google Cloud projects but requiring uniqueness within the same project for proper billing.\u003c/p\u003e\n"]]],["Session tokens group user autocomplete searches for billing. Generate unique session tokens (e.g., version 4 UUIDs) per project. As users type, autocomplete requests are made. Upon selection, all requests are bundled into a single, session-token-linked request. If a place is selected, only the Place data request is charged. Otherwise, only the search query is charged. If no selection is made, the session times out, and only the search query is billed. Discard the token after the session.\n"],null,["# Using session tokens\n\nSelect platform: [Android](/maps/documentation/places/android-sdk/using-session-tokens \"View this page for the Android platform docs.\") [iOS](/maps/documentation/places/ios-sdk/using-session-tokens \"View this page for the iOS platform docs.\") [Web Service](/maps/documentation/places/web-service/using-session-tokens \"View this page for the Web Service platform docs.\")\n\n\u003cbr /\u003e\n\nSession tokens group the query and selection phases of a user autocomplete\nsearch into a discrete session for billing purposes.\n\nCreate a session token\n----------------------\n\nUsers are responsible for generating unique session tokens for each session.\nGoogle recommends using [version 4 UUIDs](https://tools.ietf.org/html/rfc4122).\n| **Note:** Session tokens can overlap across Google Cloud Console projects, but they must be unique per project. For example, an app using Project A and an app using Project B can use the same session token, but multiple apps using Project A cannot use the same session token.\n\nExample\n-------\n\nAs the user types a query, an autocomplete request is called every few\nkeystrokes (not per-character), and a list of possible results is returned. When\nthe user makes a selection from the result list, the selection counts as a\nrequest, and all of the requests made during the search are bundled and counted\nas a single request. If the user selects a place, the search query is available\nat no charge, and only the Place data request is charged. If the user does not\nmake a selection within a few minutes of the beginning of the session, only the\nsearch query is charged.\n\nLet's examine this flow of events from the perspective of an app.\n\n1. A user begins typing a query to search for \"Paris, France\".\n2. Upon detecting user input, the app creates a new session token, \"Token A\".\n3. As the user types, the API makes an autocomplete request every few characters, displaying a new list of potential results for each: \n \"P\" \n \"Par\" \n \"Paris,\" \n \"Paris, Fr\" \n4. When the user makes a selection:\n - All requests resulting from the query are grouped and added to the session represented by \"Token A\", as a single request.\n - The user's selection is counted as a Place Detail request, and added to the session represented by \"Token A\".\n5. The session is concluded, and the app discards \"Token A\".\n\nFor more information about how Autocomplete requests are billed, see [Usage and\nBilling](/maps/documentation/places/android-sdk/usage-and-billing)."]]