You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Maps API sessiontoken未按预期工作 请求未合并计费

Google Places API sessiontoken 未触发会话合并计费问题

根据官方规则,autocomplete API携带sessiontoken参数、后续同token调用placeDetails API时,同一会话关联请求应合并为单次计费,但实际使用中出现独立计费的情况,你的sessiontoken传参逻辑、调用后刷新token的逻辑从日志看是正确的,不存在必传配置项遗漏,问题基本由以下几个原因导致:

  • 控制台统计延迟:Google Cloud控制台的实时用量面板不会做会话合并计算,会话计费的后台批处理最长有48小时延迟,请求刚发送完成时查看会显示为独立请求,等待2天后查看正式计费报表,会自动合并为单会话计费项,这是最常见的误判原因。
  • 会话超时:单个sessiontoken的有效生命周期从首次发起autocomplete请求开始计算,最长为3分钟,若用户从输入第一个字符到选中地点触发placeDetails请求的间隔超过3分钟,会话会自动失效,所有请求按独立项计费。
  • SKU不匹配:会话合并计费仅对应「Autocomplete 按会话计费」SKU,如果你账号侧开通的是旧版按单请求计费的Autocomplete SKU,即使传了sessiontoken也不会触发合并计费;另外如果placeDetails请求中请求了会话包不包含的高级字段(比如联系方式、营业时间类字段),对应字段部分会单独计费。
  • 会话复用错误:若调用完placeDetails之后继续用同一个token发起新的autocomplete请求,会触发会话拆分,后续请求全部独立计费,你补充的日志中placeDetails调用完成后立即更换新token的操作是符合要求的。

第一组测试请求日志如下:

I/flutter (12295): Get URI: https://maps.googleapis.com/maps/api/place/autocomplete/json?input=s&key=<API_KEY>&sessiontoken=d7f1f97f-621d-45cf-b8fd-38d74c976fd8&location=37.4220309%2C-122.0839848&radius=5000&strictbounds=true
I/flutter (12295): Get URI: https://maps.googleapis.com/maps/api/place/autocomplete/json?input=st&key=<API_KEY>&sessiontoken=d7f1f97f-621d-45cf-b8fd-38d74c976fd8&location=37.4220309%2C-122.0839848&radius=5000&strictbounds=true
I/flutter (12295): Get URI: https://maps.googleapis.com/maps/api/place/autocomplete/json?input=sta&key=<API_KEY>&sessiontoken=d7f1f97f-621d-45cf-b8fd-38d74c976fd8&location=37.4220309%2C-122.0839848&radius=5000&strictbounds=true
I/flutter (12295): Get URI: https://maps.googleapis.com/maps/api/place/autocomplete/json?input=stat&key=<API_KEY>&sessiontoken=d7f1f97f-621d-45cf-b8fd-38d74c976fd8&location=37.4220309%2C-122.0839848&radius=5000&strictbounds=true
I/flutter (12295): Get URI: https://maps.googleapis.com/maps/api/place/autocomplete/json?input=stati&key=<API_KEY>&sessiontoken=d7f1f97f-621d-45cf-b8fd-38d74c976fd8&location=37.4220309%2C-122.0839848&radius=5000&strictbounds=true
I/flutter (12295): Get URI: https://maps.googleapis.com/maps/api/place/autocomplete/json?input=statio&key=<API_KEY>&sessiontoken=d7f1f97f-621d-45cf-b8fd-38d74c976fd8&location=37.4220309%2C-122.0839848&radius=5000&strictbounds=true
I/flutter (12295): Get URI: https://maps.googleapis.com/maps/api/place/autocomplete/json?input=station&key=<API_KEY>&sessiontoken=d7f1f97f-621d-45cf-b8fd-38d74c976fd8&location=37.4220309%2C-122.0839848&radius=5000&strictbounds=true
I/flutter (12295): Get URI: https://maps.googleapis.com/maps/api/place/details/json?place_id=ChIJr3mngX66j4ARcUF6Ln6aAmk&key=<API_KEY>&sessiontoken=d7f1f97f-621d-45cf-b8fd-38d74c976fd8
I/flutter (12295): Instance of 'PlaceDetails'

上述调用场景按规则应计为1次请求,但Google控制台API用量统计中该组请求被显示为9次独立请求。

编辑补充:新增两组包含placeDetails API调用的搜索日志,每次placeDetails调用完成后均已刷新sessiontoken参数。

I/flutter (17558): Get URI: https://maps.googleapis.com/maps/api/place/autocomplete/json?input=sta&key=<API_KEY>&sessiontoken=3dd4163e-c5aa-4504-a652-0c7861704efa&location=22.863185%2C87.3552233&radius=5000&strictbounds=true
I/flutter (17558): Get URI: https://maps.googleapis.com/maps/api/place/autocomplete/json?input=stat&key=<API_KEY>&sessiontoken=3dd4163e-c5aa-4504-a652-0c7861704efa&location=22.863185%2C87.3552233&radius=5000&strictbounds=true
I/flutter (17558): Get URI: https://maps.googleapis.com/maps/api/place/autocomplete/json?input=station&key=<API_KEY>&sessiontoken=3dd4163e-c5aa-4504-a652-0c7861704efa&location=22.863185%2C87.3552233&radius=5000&strictbounds=true
I/flutter (17558): Get URI: https://maps.googleapis.com/maps/api/place/details/json?place_id=<PLACE_DETAILS>&key=<API_KEY>&sessiontoken=3dd4163e-c5aa-4504-a652-0c7861704efa
I/flutter (17558): Instance of 'PlaceDetails'
I/flutter (17558): Get URI: https://maps.googleapis.com/maps/api/place/autocomplete/json?input=sch&key=<API_KEY>&sessiontoken=a204cfe5-0824-4e2c-8fe6-5382ef542e76&location=22.863185%2C87.3552233&radius=5000&strictbounds=true
I/flutter (17558): Get URI: https://maps.googleapis.com/maps/api/place/autocomplete/json?input=scho&key=<API_KEY>&sessiontoken=a204cfe5-0824-4e2c-8fe6-5382ef542e76&location=22.863185%2C87.3552233&radius=5000&strictbounds=true
I/flutter (17558): Get URI: https://maps.googleapis.com/maps/api/place/autocomplete/json?input=schoo&key=<API_KEY>&sessiontoken=a204cfe5-0824-4e2c-8fe6-5382ef542e76&location=22.863185%2C87.3552233&radius=5000&strictbounds=true
I/flutter (17558): Get URI: https://maps.googleapis.com/maps/api/place/autocomplete/json?input=school&key=<API_KEY>&sessiontoken=a204cfe5-0824-4e2c-8fe6-5382ef542e76&location=22.863185%2C87.3552233&radius=5000&strictbounds=true
I/flutter (17558): Get URI: https://maps.googleapis.com/maps/api/place/details/json?place_id=<PLACE_DETAILS>&key=<API_KEY>&sessiontoken=a204cfe5-0824-4e2c-8fe6-5382ef542e76
I/flutter (17558): Instance of 'PlaceDetails'

排查步骤

  • 先等待48小时后导出正式计费明细报表,不要参考实时用量面板的数据
  • 统计测试场景下从首次输入到选点的耗时,若超过3分钟,在输入侧加逻辑:用户输入停顿超过3分钟未选点时自动生成新的sessiontoken
  • 进入控制台Places API配置页,确认已启用按会话计费的SKU,同时核对placeDetails请求的fields参数,移除不需要的高级计费字段
  • 测试时控制单组autocomplete+placeDetails请求在3分钟内完成,排除超时影响

内容的提问来源于stack exchange,提问作者Tapas Pal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 17:36:23