如何获取华为运动健康服务授权码并调用Rest API访问数据?

发布者:HarmonyOS SDK
发布于:2022-06-06 10:17

华为运动健康服务(HUAWEI Health Kit)允许三方生态应用在获取用户授权后,通过REST API接口访问数据库,读取华为和生态伙伴开放的运动健康数据或写入数据到华为运动健康服务,为用户提供更加个性化的健康改善服务。如运动类App在获取授权码后可以读取华为用户的心率、步数等运动数据,最终给用户提供健康建议。

帐号服务和申请运动健康服务" class="anchor" href="#1. 申请帐号服务和申请运动健康服务">1. 申请帐号服务和申请运动健康服务

Health Kit需要用户登录和授权,需要先申请帐号服务,可以在申请帐号服务的同时创建应用,也可以为已经创建的应用开通帐号服务。创建成功后,可以在帐号服务列表里查看已创建的应用,点击条目能查看到的详细信息如下图所示。其中的APP ID,APP SECRET和回调地址后面会用到。

 

2. 获取授权码code

相比于其他Kit的REST API,Health Kit使用前需要获得授权码登录华为帐号后获取到授权码,多了一个获取授权码Code的步骤。

 

开发指南对授权码登录做了详细介绍,此处共有client_id,response_type,redirect_uri和scope共四个必传字段,其中client_id, 是在创建应用成功后自动生成的APP ID。redirect_uri 是申请帐号服务步骤中填写的“回调地址”。

 

在用户输入华为帐号登录授权之后,网页浏览器会跳转到redirect_uri对应的链接,并且把所需要的授权码code作为参数追加在链接后面。

 

 

看一下官网给出的示例请求,在电脑或手机浏览器中打开上述链接,都会显示如下的华为帐号登录和授权页面。

 

 

登录授权成功之后浏览器会跳转如下链接

 

 

其中接口需要用到的授权码code就是链接中请求载荷参数code的字符串值。

 

需要注意的是:这边控制台中的code是urlencode编码前的字符串,浏览器中的code是urlencode编码后的字符串。

 

在后续步骤主要使用的是urlencode编码前的code的值。(浏览器中的code需要进行urlencode解码再使用)

 

接下来需要通过上面获取到的授权码code,获取access_token和refresh_token。

 

由于使用限制,接下来的步骤不能再使用官网demo的参数进行测试了,需要创建自己的应用。然后传入自己项目相关的参数,重复上述步骤获取授权码code。

 

创建的应用的相关参数,都可以在“应用服务”-“帐号”下面找到,如下是创建的一个测试应用的信息页面。

 

使用授权码code获取at" class="anchor" href="#1.使用授权码code获取at">1.使用授权码Code获取AT

client_id,redirect_url需要和获取授权码code使用的一致。

 

code参数是urlencode编码前的code的值。

 

client_secret参数是上面应用信息里的APP SECRET。

 

refresh token获取access_token" class="anchor" href="#2 .refresh token获取access_token">2 .Refresh Token获取access_token

3.使用获取到的access_token测试数据相关API

由于我们上面登录授权时,申请了获取身高体重的权限,所以在此测试一下获取身高数据的接口。

 

参照“查询最新采样数据”的文档链接,按照文档中postman请求测试结果如下:

 

 

Head里面的参数:Authorization 字段值为: Bearer+‘空格’+ access_token值,形如:Bearer {access_token} ,x-client-id 的值需要和上方使用的client_id一致。

 

请求参数“dataTypeName”:“com.huawei.instantaneous.body_weight”在数据类型-体重-原子采样数据类型可以找到:
https://developer.huawei.com/consumer/cn/doc/development/HMSCore-References/latest-sampleset-0000001078273166

 

 

如果要同时查询多个数据,请求url示例如下:
https://health-api.cloud.huawei.com/healthkit/v1/sampleSets/latestSamplePoint?dataType=com.huawei.instantaneous.body_weight&dataType=com.huawei.instantaneous.blood_glucose
链接后拼接多个dataType参数即可。

 

了解更多详情>>

 

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

 

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

 

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


声明:该文观点仅代表作者本人,转载请注明来自看雪