华为运动健康服务(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. 微信小程序如何把接口调用成功的回调函数返回的参数return出去?(promise就可以解决)

    举个栗子//获取应用实例 //const app = getApp() //const util = require('../../utils/util.js') //const sign = uti ...

  2. Linux上部署net6应用

    前言 ​ .net6都出来了,作为一名.net搬砖工却一直都在windows下部署应用,还未尝试过linux环境下部署应用.参考福禄网络研发团队的相关博客,学习一下如何将应用部署到linux系统. . ...

  3. MFC软件国际化的几个问题及其解决方案

    作者:马健 邮箱:stronghorse_mj@hotmail.com主页:https://www.cnblogs.com/stronghorse/ 以前我以为PDG相关软件只会在国内流行,所以发行简 ...

  4. FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发

    接上一篇文章FastAPI(六十六)实战开发<在线课程学习系统>接口开发--用户注册接口开发.这次我们分享实际开发--用户登陆接口开发. 我们先来梳理下逻辑 1.查询用户是否存在2.校验密 ...

  5. smdms超市订单管理系统之登录功能

    一.超市订单管理系统准备阶段 Supermarket order management system 创建数据库 数据库代码放置如下 点击查看数据库address代码 CREATE TABLE `sm ...

  6. CRLF 漏洞学习和工具使用

    原理 CRLF 指的是回车符(CR,ASCII 13,\r,%0d) 和换行符(LF,ASCII 10,\n,%0a),操作系统就是根据这个标识来进行换行的.但是如果对输入过滤不严,就会将恶意语句注入 ...

  7. 一个程序的执行时间可以使用time+命令形式来获得

    编写程序testtime.c #include <stdio.h> //这个头一定要加 #include<time.h> main() { time_t timep; time ...

  8. C# 静态常量(const)动态常量(static、readonly)用法区别

    C# 常量的命名方法 一个低级错误 readonly.const 代码 使用方式 支持类型 维护性 性能比较 优先使用 C# Static 与 Java Static C# Const 与 Java ...

  9. 使用 Nginx 实现 URL 的重定向

    1. 概述 老话说的好:取乎上,得其中:取乎中,得其下.因此我们不妨把目标定的高一些,去努力,才能得到更好回报. 言归正传,今天我们来聊聊 使用 Nginx 实现 URL 的重定向. 2. 使用 Ng ...

  10. XGBoost文本分类,多分类、二分类、10-Fold(K-Fold)

    做机器学习的时候经常用到XGB,简单记录一下 K折交叉验证也是模型常用的优化方法.一起记录... K折交叉验证:类似三个臭皮匠,顶个诸葛亮.我的理解是,就是用民主投票的方式,选取票数最高的那个当结果. ...