当前位置: 首页 > 后端技术 > Java

【FAQ】运动健康服务REST API接口使用过程中常见问题和解决方法总结

时间:2023-04-01 14:32:12 Java

【FAQ】运动健康服务RESTAPI接口使用过程中常见问题及解决方案汇总运动健康数据服务。在实际的集成过程中,开发者可能会遇到各种各样的问题。在此对典型问题进行分享和总结,希望能为其他遇到类似问题的开发者提供参考。1、注册订阅通知能力后,连通性检测失败。注册为订阅者后,测试连通性检查回调通知地址时,提示“连通性检查失败,连通性检查响应不是204”。原因分析:如果回调通知地址可访问,开发者需要确认订阅的回调通知地址的HTTP状态码是否为204,否则返回404,表示回调地址连通性检查失败。参考订阅数据文档解决方法:查看链接是否可用,返回状态码为204。2、采样数据统计接口返回的步数总和与获取详细步数数据后自己计算的总和不一致。使用采样数据统计查询接口获取步长统计查询接口:https://health-api.cloud.huaw...请求参数:{"polymerizeWith":[{"dataTypeName":"com.huawei.continuous.steps.delta"}],"endTime":1651809600000,"startTime":1651766400000,"groupByTime":{"groupPeriod":{"timeZone":"+0800","unit":"day","value":1}}}返回的步数最终结果为7118。使用采样数据明细查询接口获取步数明细并计算总计进行明细查询接口:https://health-api.cloud.huaw...请求参数:{"polymerizeWith":[{"dataTypeName":"com.huawei.continuous.steps.delta"}],"endTime":1651809600000,"startTime":1651766400000}根据计算的总步数返回结果为6280,从数据可以看出,在相同时间段的前提下,采样数据统计接口返回的总步数与根据详细步数计算的总和不一致。的。原因分析:是明细数据和统计数据的机制不同造成的。详细数据和统计数据另行报告。由于各种原因,详细数据可能丢失或延迟,导致两个数据匹配不完全。其次,在统计一天的数据时,聚合条件为以下参数时(见下图),返回的是上报的统计数据,而不是明细数据计算出来的数据。解决方法:采样数据统计查询时,按时间聚合,传入groupByTime参数,在groupByTime中设置duration参数。请求参数:{"polymerizeWith":[{"dataTypeName":"com.huawei.continuous.steps.delta"}],"endTime":1651809600000,"startTime":1651766400000,"groupByTime":{"duration":86400000}}最终返回的结果是6280,和按照详细步骤计算出来的sum是一致的。3.错误代码403,错误信息“InsufficientPermission:Requesthadinsufficientauthenticationscopes.”原因分析:403是拒绝请求,主要是scopes权限不够,导致请求被拒绝。解决方法:(1)查看联盟卡中是否申请了相关权限。(2)在鉴权鉴权时检查请求的权限是否传入,在授权页面是否通过授权。认证授权接口是否传入请求的权限,是否检查权限4、错误码400,错误信息“InsufficientPermission:Requesthadinsufficientauthenticationscopes”。案例:查询步数采样数据明细:根据首次认证的code代码生成。首次认证时间(首次生成密码的时间):2022年5月7日上午8点左右。数据采集??开始时间:开始时间:2022-05-0600:00:00(1651766400000)结束时间:2022-05-0612:00:00(1651809600000)具体请求见下图:响应结果:原因分析:在查询数据时,为了保护用户数据,开发者只有在用户授权后才能查询数据。如果需要在用户授权前查询数据,开发者需要获得“读取历史数据”权限的授权。如果用户没有授予这个权限,如果开发者在查询数据时设置的开始时间早于用户的授权时间,那么开始时间会自动修正为用户第一次授权的时间,这样会导致查询错误(代码:400,消息:“InvalidstartTimeorendTime.”)或者只能查询到用户授权时间之后的数据,与设置的开始时间不一致。以问题中的例子为例,由于用户没有授予“读取历史数据”的权限,如果开始时间为5月6日,首次授权时间为5月7日,则开始时间会自动修正为第一次授权时间,即5月7日,导致修正后的开始时间晚于结束时间,所以报错码400,报错信息“InvalidstartTimeorendTime”。被退回。解决方法:(1)查看是否在HealthKit联盟卡上申请了“读取历史数据”权限,在服务端应用可见(2)生成授权码代码时,添加“https://www.huawei.com/healthkit/historydata.open”权限,允许用户在登录华为帐号后授予应用“读取历史数据”权限。授权后查询数据:更多详情>>访问华为运动健康服务联盟官网,访问华为运动健康场景解决方案,获取华为运动健康服务发展指导文件