세션 토큰 사용
세션 토큰은 사용자 자동 완성 검색의 쿼리 및 선택 단계를 결제 목적의 개별 세션으로 그룹화합니다. 다음 예는 Autocomplete (신규) 및 Place Details (신규) 호출에서 세션 토큰을 사용하는 방법을 보여줍니다.
세션 토큰 만들기
사용자는 각 세션에 대해 고유한 세션 토큰을 생성할 책임이 있습니다. 버전 4 UUID를 사용하는 것이 좋습니다.
자동 완성 (신규) 요청
자동 완성 (신규) 요청은 HTTP POST 요청입니다. 요청 본문 매개변수에 관한 자세한 내용은 Place Autocomplete (신규) 요청을 참고하세요.
다음 요청 시리즈는 사용자가 샌프란시스코에서 피자 가게를 검색하는 것을 보여줍니다. 사용자가 검색어를 입력하기 시작하면 각 키 입력마다 Autocomplete (신규)가 호출됩니다. 생성된 세션 토큰은 각 호출에서 매개변수로 전달됩니다.
첫 번째 요청 및 응답
요청 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
응답 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" ] } }, ] / ... / }
두 번째 요청 및 응답
요청 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
응답 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" ] } }, /.../ ] }
세 번째 요청 및 응답
요청 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
응답 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" ] } }, /.../ ] }
세션 종료
Place Details (신규) 또는 Address Validation을 요청하고 Autocomplete(신규) 요청에 사용한 것과 동일한 세션 토큰을 전달하여 세션을 종료합니다.
장소 세부정보 (신규) 요청
장소 세부정보 (신규) 요청은 HTTP GET 요청입니다. 요청 본문 매개변수에 관한 자세한 내용은 장소 세부정보 (신규) 요청을 참고하세요.
다음 장소 세부정보 (신규) 요청에는 선택한 장소의 id
및 이전 Autocomplete (신규) 호출에 사용된 sessionToken
가 포함됩니다.
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
ChIJ_QJSSfGAhYARQVFJBNKy3HE
의 장소 id
를 사용하여 호출하면 다음 JSON 응답이 생성됩니다.
{ "id": "ChIJ_QJSSfGAhYARQVFJBNKy3HE", "businessStatus": "OPERATIONAL", "displayName": { "text": "Pizza By The Slice", "languageCode": "en" }, "accessibilityOptions": { "wheelchairAccessibleParking": false, "wheelchairAccessibleEntrance": true } }
주소 확인 요청
주소 확인 요청은 HTTP POST 요청입니다. 요청 본문 매개변수에 관한 자세한 내용은 주소 유효성 검사 요청 보내기를 참고하세요.
다음 주소 유효성 검사 요청에는 자동 완성 (신규) 응답의text
필드에 있는 선택한 장소의 주소와 이전 자동 완성 (신규) 호출에 사용된 sessionToken
가 포함됩니다.
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"
호출하면 다음 JSON 응답이 생성됩니다.
{ "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" }
세션 종료
사용자가 세션을 포기하면 세션이 종료됩니다. 예를 들어 사용자가 피자 가게를 검색하기 시작했지만 장소를 선택하지 않거나 (Place Details (New) 호출 트리거) 주소를 확인하지 않으면 (Address Validation 호출 트리거) 세션이 종료되고 세션 토큰이 만료됩니다.