华为运动健康服务(HUAWEI Health Kit)为三方生态应用提供了REST API接口,通过其接口可访问数据库,为用户提供运动健康类数据服务。在实际的集成过程中,开发者们可能会遇到各种问题,这里我们将典型问题进行分享和总结,希望为其他遇到类似问题的开发者提供参考。

1. 注册订阅通知能力后,连通性检查失败

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

原因分析:

在回调通知地址可以访问的情况下,需要开发者确认订阅的回调通知地址的HTTP状态码是否为204,否则将返回404表示回调地址连通性检验失败。

参考订阅数据文档

解决方案:

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

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

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

统计查询接口:https://health-api.cloud.huawei.com/healthkit/v1/sampleSet:polymerize

请求参数:

{
"polymerizeWith": [
{
": 1651809600000,
"startTime": 1651766400000,
"groupByTime": {
"groupPeriod": {
"timeZone": "+0800",
"unit": "day",
"value": 1
}
}
}

最终返回的步数结果为7118

采样数据明细查询接口获取步数明细,并计算总和

明细查询接口:https://health-api.cloud.huawei.com/healthkit/v1/sampleSet:polymerize

请求参数:

{
"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"权限,供用户在登录华为帐号之后为应用授予“读取历史数据”。

授权之后查询的数据:

了解更多详情>>

访问华为运动健康服务联盟官网

访问华为运动健康场景解决方案

获取华为运动健康服务开发指导文档

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

  1. 对于api接口的爬虫,通常的解决方法

    对于api接口的爬虫,通常的解决方法: 依靠爬虫功能的IP库 SDK 源站用不同的状态码进行打标,用户登录账号,登录成功返回200,登录失败返回其他状态码.

  2. 【FAQ】申请华为运动健康服务授权的4个常见问题及解决方法

    华为运动健康服务(HUAWEI Health Kit)提供原子化数据开放,在获取用户对数据的授权后,应用可通过接口访问运动健康数据,对用户数据进行增.删.改.查等操作,为用户提供运动健康类数据服务.这 ...

  3. Mate 40系列发布 搭载华为运动健康服务带来健康数字生活

    10月30日,HUAWEI Mate 40系列国内发布会如期而至.Mate 40系列除了拥有强悍的性能.全能记录影像和突破性的交互之外,还搭载了全新升级的HMS Core,其中,Health Kit( ...

  4. 钉钉服务端api接口使用

    原文链接:http://www.cnblogs.com/xiaosongJiang/p/9991573.html 第一步:注册钉钉企业账号 打开链接:https://oa.dingtalk.com/# ...

  5. 【FAQ】接入HMS Core地图服务过程中常见问题总结

    HMS Core地图服务(Map Kit)给开发者提供一套地图开发调用的SDK,助力全球开发者实现个性化地图呈现与交互,方便轻松地在应用中集成地图相关的功能,全方位提升用户体验. 在日常工作中,我们会 ...

  6. 【FAQ】华为帐号服务报错 907135701的常见原因总结和解决方法

    很多开发者在接入华为帐号服务时,经常会出现907135701的报错.根据官网文档说明,错误码907135701表示: 这个错误码在安卓和鸿蒙上都会出现,导致该报错的原因有很多,开发者可以按照下面几点进 ...

  7. 记一次接口504 Gateway Time-out原因及解决方法

    今天在刷新公司项目页面时发现有个板块一直刷新不出数据,最后发现接口报错(504 Gateway Time-out) 通过查看代码发现有个sql语句,如下,特别慢 select `vdc1`,      ...

  8. 提示“Web打印服务CLodop未安装启动”的各种原因和解决方法

    旧版提示:"CLodop云打印服务(localhost本地)未安装启动!"新版提示:"Web打印服务CLodop未安装启动,点击这里下载执行安装(若此前已安装过,可点这里 ...

  9. 【Zabbix】在CentOS 7上搭建Zabbix服务,收集Windows客户端计数器性能数据(含过程中遇到的问题解决方法)

    1.环境 1.1.关闭防火墙 命令:systemctl stop firewalld 或者 systemctl stop firewalld.service (备注:相应的,若要开启防火墙,将对应的& ...

随机推荐

  1. (动态模型类,我的独创)Django的原生ORM框架如何支持MongoDB,同时应对客户使用时随时变动字段

    1.背景知识 需要开发一个系统,处理大量EXCEL表格信息,各种类别.表格标题多变,因此使用不需要预先设计数据表结构的MongoDB,即NoSQL.一是字段不固定,二是同名字段可以存储不同的字段类型. ...

  2. 【面试普通人VS高手系列】Fail-safe机制与Fail-fast机制分别有什么作用

    前段时间一个小伙伴去面试,遇到这样一个问题. "Fail-safe机制与Fail-fast机制分别有什么作用" 他说他听到这个问题的时候,脑子里满脸问号.那么今天我们来看一下,关于 ...

  3. ansible模块解析及使用

    模块一:setup(收集远程主机信息) [root@zabbix30 /]# ansible test -m setup 模块二:ping(测试主机是否在线) [root@zabbix30 /]# a ...

  4. python解释器安装与使用

    Python解释器安装与使用 首先了解下python是由'龟叔' 也就是右边这位和蔼的大叔叔 全名'Guido van Rossum'在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. ...

  5. .Net Core 进程守护之Supervisor使用

    1.执行下列命令安装supervisor wget https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm ...

  6. Nuxt.js(二、解决首屏速度与SEO)

    Nuxt.js(二.解决首屏速度与SEO) 1.普通的Vue SPA初始化加载速度很慢 在传统的web应用中,当用户请求一个页面时,服务器直接返回一个html文件,浏览器直接渲染出来.但是,在vue应 ...

  7. 得到一个a(10)到b(20)的随机数。包括10和20

  8. PuddingSwap联合 ESBridge举办愚人节“币圈愚话”联合空投活动,完成任务即可获得惊喜奖励

    据官方消息,4月1日0:00- 4月2日23:59,PuddingSwap联合 ESBridge举办"币圈愚话"空投活动,完成任务即可获得惊喜奖励. 此次PuddingSwap联合 ...

  9. 2021.10.29 P1649 [USACO07OCT]Obstacle Course S(BFS)

    2021.10.29 P1649 [USACO07OCT]Obstacle Course S(BFS) 题意: 给一张n*n的图,起点为A,终点为 B,求从A到B转弯次数最少为多少. 分析: 是否存在 ...

  10. sqlmap源码分析(一)

    Sqlmap源码分析(一) 此次分析的sqlmap目标版本为1.6.1.2#dev 只对sqlmap的核心检测代码进行详细分析其他的一带而过 sqlmap.py文件结构 为了不让篇幅过长下面只写出了s ...