调用Google Fit API聚合带device字段数据源时报未找到或不可读错误
调用Google Fitness API带device字段数据源报错的原因分析
你遇到的forbidden错误核心是调用方没有对应绑定设备数据源的访问权限,常见原因如下:
- OAuth授权范围不足
绑定具体硬件设备的健康数据属于高敏感数据,需要申请更细粒度的OAuth授权Scope才能读取。普通的通用健身数据读取权限仅支持访问无设备绑定的公共聚合数据源,也就是你示例中可正常请求的Google GMS合并数据源、第三方应用同步的数据源。需要检查你申请的授权Scope是否覆盖了对应数据类型的设备级读取权限。 - 数据源为私有受限数据源
GET googleapis.com/fitness/v1/users/me/dataSources接口返回的数据源列表包含仅对系统应用、设备厂商开放的私有数据源,这类数据源虽然会返回ID,但第三方应用默认没有读取权限。你示例中触发错误的Pixel、三星设备专属数据源都属于这类私有数据源,仅允许Google Fit官方、三星健康等对应厂商的应用读取。 - 跨设备访问限制
绑定了具体设备UID的数据源默认仅允许在对应设备上完成授权的应用访问,如果你是在其他设备上调用API,哪怕使用的是同一个Google账号,也会触发权限拒绝错误。 - 数据源不支持聚合操作
部分raw开头的设备原始累计数据源本身不支持直接传入聚合接口调用,你需要先调用原始数据查询接口拉取对应时间区间的原始数据,再自行完成聚合计算,直接发起聚合请求也会触发该类报错。
内容的提问来源于stack exchange,提问作者abolishteabags
相关产品推荐
相关产品推荐

