Sử dụng mã phiên

Mã thông báo phiên sẽ nhóm các giai đoạn truy vấn và lựa chọn của hoạt động 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. Các ví dụ sau cho biết cách sử dụng mã phiên trong các lệnh gọi Tự động hoàn thành (Mới) và Chi tiết địa điểm (Mới).

Tạo mã phiên

Người dùng chịu trách nhiệm tạo mã thông báo phiên duy nhất cho mỗi phiên. Bạn nên sử dụng mã nhận dạng duy nhất (UUID) phiên bản 4.

Tạo yêu cầu Tự động hoàn thành (Mới)

Yêu cầu Tự động hoàn thành (Mới) là một yêu cầu POST qua HTTP. Để biết thêm thông tin về tham số nội dung của yêu cầu, hãy xem các yêu cầu Tự động hoàn thành địa điểm (Mới).

Các loạt yêu cầu sau đây cho thấy một người dùng đang tìm kiếm một cửa hàng pizza ở San Francisco. Khi người dùng bắt đầu nhập truy vấn, tính năng Tự động hoàn thành (Mới) được gọi cho từng thao tác nhấn phím. Mã thông báo phiên đã tạo sẽ được chuyển dưới dạng thông số trong mỗi lệnh gọi.

Yêu cầu đầu tiên và phản hồi

Yêu cầu 1

curl -X POST -d '{
  "input": "p",
  "sessionToken": "3519edfe-0f75-4a30-bfe4-7cbd89340b2c",
  "locationBias": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965
      },
      "radius": 500.0
    }
  }
}' -H 'Content-Type: application/json' -H "X-Goog-Api-Key: YOUR_API_KEY" \
https://places.googleapis.com/v1/places:autocomplete

Phản hồi 1

{
  "suggestions": [
    {
      "placePrediction": {
        "place": "places/ChIJHSGzi_yAhYARnrPmDWAx9ro",
        "placeId": "ChIJHSGzi_yAhYARnrPmDWAx9ro",
        "text": {
          "text": "PIER 39, The Embarcadero, San Francisco, CA, USA",
          "matches": [
            {
              "endOffset": 1
            }
          ]
        },
        "structuredFormat": {
          "mainText": {
            "text": "PIER 39",
            "matches": [
              {
                "endOffset": 1
              }
            ]
          },
          "secondaryText": {
            "text": "The Embarcadero, San Francisco, CA, USA"
          }
        },
        "types": [
          "historical_landmark",
          "shopping_mall",
          "point_of_interest",
          "establishment",
          "marina",
          "tourist_attraction"
        ]
      }
    },
  ]
   / ... /
}

Yêu cầu thứ hai và phản hồi

Yêu cầu 2

curl -X POST -d '{
  "input": "pi",
  "sessionToken": "3519edfe-0f75-4a30-bfe4-7cbd89340b2c",
  "locationBias": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965
      },
      "radius": 500.0
    }
  }
}' -H 'Content-Type: application/json' -H "X-Goog-Api-Key: YOUR_API_KEY" \
https://places.googleapis.com/v1/places:autocomplete

Phản hồi 2

{
  "suggestions": [
    {
      "placePrediction": {
        "place": "places/ChIJHSGzi_yAhYARnrPmDWAx9ro",
        "placeId": "ChIJHSGzi_yAhYARnrPmDWAx9ro",
        "text": {
          "text": "PIER 39, The Embarcadero, San Francisco, CA, USA",
          "matches": [
            {
              "endOffset": 2
            }
          ]
        },
        "structuredFormat": {
          "mainText": {
            "text": "PIER 39",
            "matches": [
              {
                "endOffset": 2
              }
            ]
          },
          "secondaryText": {
            "text": "The Embarcadero, San Francisco, CA, USA"
          }
        },
        "types": [
          "establishment",
          "point_of_interest",
          "shopping_mall",
          "marina",
          "historical_landmark",
          "tourist_attraction"
        ]
      }
    },
  /.../
  ]
}

Yêu cầu thứ ba và phản hồi

Yêu cầu 3

curl -X POST -d '{
  "input": "piz",
  "sessionToken": "3519edfe-0f75-4a30-bfe4-7cbd89340b2c",
  "locationBias": {
    "circle": {
      "center": {
        "latitude": 37.7937,
        "longitude": -122.3965
      },
      "radius": 500.0
    }
  }
}' -H 'Content-Type: application/json' -H "X-Goog-Api-Key: YOUR_API_KEY" https://places.googleapis.com/v1/places:autocomplete

Phản hồi 3

{
  "suggestions": [
    {
      "placePrediction": {
        "place": "places/ChIJ_QJSSfGAhYARQVFJBNKy3HE",
        "placeId": "ChIJ_QJSSfGAhYARQVFJBNKy3HE",
        "text": {
          "text": "Pizza By The Slice, Grant Avenue, San Francisco, CA, USA",
          "matches": [
            {
              "endOffset": 3
            }
          ]
        },
        "structuredFormat": {
          "mainText": {
            "text": "Pizza By The Slice",
            "matches": [
              {
                "endOffset": 3
              }
            ]
          },
          "secondaryText": {
            "text": "Grant Avenue, San Francisco, CA, USA"
          }
        },
        "types": [
          "establishment",
          "point_of_interest",
          "food",
          "pizza_restaurant",
          "restaurant"
        ]
      }
    },
  /.../
  ]
}

Kết thúc phiên

Chấm dứt một phiên bằng cách đưa ra yêu cầu Chi tiết địa điểm (Mới) hoặc Xác thực địa chỉ và chuyển cùng một mã thông báo phiên mà bạn đã sử dụng cho các yêu cầu Tự động hoàn thành (Mới).

Tạo yêu cầu Thông tin chi tiết về địa điểm (Mới)

Yêu cầu Thông tin chi tiết về địa điểm (Mới) là một yêu cầu HTTP GET. Để biết thêm thông tin về yêu cầu thông số nội dung, hãy xem các yêu cầu Thông tin chi tiết về địa điểm (Mới).

Yêu cầu Thông tin chi tiết về địa điểm (Mới) sau đây bao gồm id của địa điểm đã chọn và sessionToken được sử dụng trong các lệnh gọi Tự động hoàn thành (Mới) trước đó.

curl -X GET -H 'Content-Type: application/json' \
-H "X-Goog-Api-Key: YOUR_API_KEY" \
-H "X-Goog-FieldMask: id,displayName,accessibilityOptions,businessStatus" \
https://places.googleapis.com/v1/places/ChIJ_QJSSfGAhYARQVFJBNKy3HE?sessionToken=3519edfe-0f75-4a30-bfe4-7cbd89340b2c

Bằng cách sử dụng vị trí idChIJ_QJSSfGAhYARQVFJBNKy3HE, lệnh gọi sẽ tạo ra phản hồi JSON sau:

{
  "id": "ChIJ_QJSSfGAhYARQVFJBNKy3HE",
  "businessStatus": "OPERATIONAL",
  "displayName": {
    "text": "Pizza By The Slice",
    "languageCode": "en"
  },
  "accessibilityOptions": {
    "wheelchairAccessibleParking": false,
    "wheelchairAccessibleEntrance": true
  }
}

Tạo yêu cầu xác thực địa chỉ

Yêu cầu xác thực địa chỉ là một yêu cầu POST qua HTTP. Để biết thêm thông tin về tham số nội dung của yêu cầu, hãy xem bài viết Gửi yêu cầu xác thực địa chỉ.

Yêu cầu Xác thực địa chỉ sau đây bao gồm địa chỉ của địa điểm đã chọn, được tìm thấy trong trường text của phản hồi Tự động hoàn thành (Mới) và sessionToken được sử dụng trong các lệnh gọi Tự động hoàn thành (Mới) trước đó.
    curl -X POST -d '{
      "sessionToken": "3519edfe-0f75-4a30-bfe4-7cbd89340b2c",
      "address": {
        "addressLines": "Pizza By The Slice, Grant Avenue, San Francisco, CA, USA"
      }
    }' \
    -H 'Content-Type: application/json' \
    "https://addressvalidation.googleapis.com/v1:validateAddress?key=YOUR_API_KEY"

Lệnh gọi tạo ra phản hồi JSON như sau:

    {
      "result": {
        "verdict": {
          "inputGranularity": "PREMISE",
          "validationGranularity": "PREMISE",
          "geocodeGranularity": "PREMISE",
          "hasInferredComponents": true
        },
        "address": {
          "formattedAddress": "Pizza By The Slice, Grant Avenue, San Francisco, CA 94133, USA",
          "postalAddress": {
            "regionCode": "US",
            "languageCode": "en",
            "postalCode": "94133",
            "administrativeArea": "CA",
            "locality": "San Francisco",
            "addressLines": [
              "Pizza By The Slice",
              "Grant Ave"
            ]
          },
          "addressComponents": [
            {
              "componentName": {
                "text": "Pizza By The Slice",
                "languageCode": "en"
              },
              "componentType": "point_of_interest",
              "confirmationLevel": "CONFIRMED"
            },
            {
              "componentName": {
                "text": "Grant Avenue",
                "languageCode": "en"
              },
              "componentType": "route",
              "confirmationLevel": "CONFIRMED"
            },
            {
              "componentName": {
                "text": "San Francisco",
                "languageCode": "en"
              },
              "componentType": "locality",
              "confirmationLevel": "CONFIRMED"
            },
            {
              "componentName": {
                "text": "CA",
                "languageCode": "en"
              },
              "componentType": "administrative_area_level_1",
              "confirmationLevel": "CONFIRMED"
            },
            {
              "componentName": {
                "text": "USA",
                "languageCode": "en"
              },
              "componentType": "country",
              "confirmationLevel": "CONFIRMED"
            },
            {
              "componentName": {
                "text": "94133"
              },
              "componentType": "postal_code",
              "confirmationLevel": "CONFIRMED",
              "inferred": true
            }
          ],
          "missingComponentTypes": [
            "street_number"
          ]
        },
        "geocode": {
          "location": {
            "latitude": 37.800504,
            "longitude": -122.4074794
          },
          "plusCode": {
            "globalCode": "849VRH2V+62"
          },
          "bounds": {
            "low": {
              "latitude": 37.800504,
              "longitude": -122.4074794
            },
            "high": {
              "latitude": 37.800504,
              "longitude": -122.4074794
            }
          },
          "featureSizeMeters": 10,
          "placeId": "ChIJ_QJSSfGAhYARQVFJBNKy3HE",
          "placeTypes": [
            "food",
            "restaurant",
            "point_of_interest",
            "establishment"
          ]
        },
        "uspsData": {
          "standardizedAddress": {
            "firstAddressLine": "PIZZA BY THE SLICE",
            "secondAddressLine": "GRANT AVE",
            "cityStateZipAddressLine": "SAN FRANCISCO",
            "city": "SAN FRANCISCO",
            "state": "CA",
            "zipCode": "94133"
          },
          "dpvFootnote": "A1M1",
          "postOfficeCity": "SAN FRANCISCO",
          "postOfficeState": "CA"
        }
      },
      "responseId": "4b669675-2c3b-463a-ae20-400248cf6ac9"
    }

Bỏ phiên

Một phiên sẽ chấm dứt nếu người dùng rời khỏi phiên đó. Ví dụ: nếu người dùng bắt đầu tìm kiếm một cửa hàng bánh pizza nhưng không chọn một địa điểm (kích hoạt cuộc gọi Thông tin chi tiết về địa điểm (Mới) hoặc xác thực địa chỉ (kích hoạt cuộc gọi Xác thực địa chỉ), thì phiên sẽ chấm dứt và mã phiên hết hạn.