乐趣区

关于android:FAQ运动健康服务REST-API接口使用过程中常见问题和解决方法总结

华为静止衰弱服务(HUAWEI Health Kit)为三方生态利用提供了 REST API 接口,通过其接口可拜访数据库,为用户提供静止衰弱类数据服务。在理论的集成过程中,开发者们可能会遇到各种问题,这里咱们将典型问题进行分享和总结,心愿为其余遇到相似问题的开发者提供参考。

1. 注册订阅告诉能力后,连通性查看失败

在注册成为订阅者后,测试连通性查看回调告诉地址时,提醒“连通性查看失败,连通性查看响应非 204”。

起因剖析:

在回调告诉地址能够拜访的状况下,须要开发者确认订阅的回调告诉地址的 HTTP 状态码是否为 204,否则将返回 404 示意回调地址连通性测验失败。

参考订阅数据文档

解决方案:

查看链接是否可用,且返回的状态码是否为 204。

2. 采样数据统计接口返回的步数总和与获取步数明细数据后本人计算的总和不统一

用采样数据统计查问接口获取步数总和

统计查问接口:https://health-api.cloud.huaw…

申请参数:

{
    "polymerizeWith": [
        {": 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,与依据步数明细计算的总和统一。

3. 错误码 403,错误信息“Insufficient Permission: Request had insufficient authentication scopes.”

起因剖析:

403 为拒绝请求,次要是 scopes 权限有余,导致拒绝请求。

解决方案:

(1)查看联盟卡片中是否申请了相干权限。

(2)查看认证鉴权时是否传入了申请的权限,且是否在受权页面进行了批准受权。

认证鉴权时是否传入了申请的权限

受权界面是否勾选了权限

4. 错误码 400,错误信息“Insufficient Permission: Request had insufficient authentication scopes.”

案例:查问步数的采样数据明细

参数阐明:

Access Token:依据首次认证鉴权的 code 码生成。

首次认证鉴权的工夫(第一次生成 code 码的工夫):2022 年 5 月 7 日上午 8 点左右。

采集数据的起始工夫:

开始工夫:2022-05-06 00:00:00(1651766400000)

完结工夫:2022-05-06 12:00:00(1651809600000)

具体申请,见下图:

响应后果:

起因剖析:

查问数据时,出于对用户数据的爱护,只容许开发者查问在用户受权之后的数据。如果须要查问用户受权前的数据,开发者须要获取到“读取历史数据”权限的受权,如果用户未授予此权限,开发者在查问数据时设置的起始工夫若早于用户受权工夫,则起始工夫将主动修改为用户首次受权的工夫,这将导致查问谬误(code:400,message:“Invalid startTime or endTime.”)或仅能查问到用户受权工夫后的数据,与设置的起始工夫不统一。
拿问题中的例子来说,因为用户未授予“读取历史数据”的权限,在开始工夫为 5 月 6 日,首次受权工夫为 5 月 7 日的状况下,开始工夫会主动修改为首次受权工夫,也就是 5 月 7 日,这就导致修改后的开始工夫晚于了完结工夫,因而才会返回了错误码 400,错误信息 ”Invalid startTime or endTime.”。

解决方案:

(1)查看 Health Kit 联盟卡片上是否申请了“读取历史数据”权限,此权限在服务器利用中可见

(2)生成受权码 code 时, 在 scope 中增加 ”https://www.huawei.com/healthkit/historydata.open” 权限,供用户在登录华为帐号之后为利用授予“读取历史数据”。

受权之后查问的数据:

理解更多详情 >>

拜访华为静止衰弱服务联盟官网

拜访华为静止衰弱场景解决方案

获取华为静止衰弱服务开发领导文档

退出移动版