You need to enable JavaScript to run this app. 调用Google Fit心率数据集查询接口时JS返回空point数组的问题
优惠活动
大模型
产品
解决方案
定价
更多

调用Google Fit心率数据集查询接口时JS返回空point数组的问题

Google Fit 心率数据集查询返回空point数组的解决方法

问题本质

对比两次请求的返回结果可以发现,虽然接口没有抛出权限错误、时间范围完全一致,但两次请求实际命中的是完全不同的心率数据源:

  • 官方调试页正常返回数据的数据源ID:raw:com.google.heart_rate.bpm:AA:62:2a5297f4:Notify for Amazfit - heart rate
  • 本地运行JS代码返回空结果的数据源ID:raw:com.google.heart_rate.bpm:com.mc.amazfit1:Amazfit:Amazfit Bip Watch:97f19a4a:Notify for Amazfit - heart rate

Google Fit的原始(raw)类型数据源是按上传渠道、设备信息、所属应用独立拆分的,哪怕数据类型都是心率bpm、来源标签都是“Notify for Amazfit”,只要ID段中的包名、硬件标识、设备序列号任意一段有差异,就是完全隔离的独立数据源,互相之间不共享数据。
另外需要注意Google Fit接口一个容易踩坑的特性:查询raw数据源时,哪怕请求传入的数据源ID和账号下已有的某条同类型数据源存在微小偏差,接口也不会抛出404错误,而是会返回匹配到的这条同类型数据源的空响应框架(包含最小/最大时间范围字段、空point数组),这种返回形态很容易让人误以为参数已经传对了,只是没有数据而已。

排查与解决步骤

  • 替换代码中的默认数据源ID
    官方自动生成的JS示例代码,会自动拉取当前授权账号下第一条匹配心率类型的数据源作为默认值,需要手动把代码中写死的dataSourceId字段,1:1替换成在调试页能正常返回心率点数据的完整字符串,注意每一个冒号分隔的片段、大小写都要完全匹配,不能有偏差。
  • 校验授权账号的一致性
    确认JS代码授权时使用的Google账号,和官方调试页测试时登录的账号是同一个。raw类型的Google Fit数据和账号强绑定,跨账号查询时不会返回权限错误,只会默认返回空point的响应。
  • 确认授权Scope的覆盖范围
    确保OAuth授权时申请了fitness.heart_rate.read权限,该权限开放原始心率数据的读取能力;如果仅申请了聚合类型的心率权限,将无法读取raw数据源的具体点数据,且不会触发权限报错。
  • 核对时间范围参数
    确认JS代码中传入的纳秒级时间范围,和调试页测试时使用的时间范围完全一致,避免因时间范围偏移落在无数据区间,导致返回空point。

内容的提问来源于stack exchange,提问作者michelle.70

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.14 09:54:04