【HMS Core】调用Health Kit接口出现获取不到数据的情况

发布时间 2023-03-22 21:13:18作者: 华为开发者论坛

【问题描述1】

已经在华为健康APP中绑定设备,并确认有步数等信息且同步到了云端,但通过开发者接口无法获取

 

【解决方案】

请确认Health Kit登录的账号和运动健康App中有数据的账号是同一个,并检查在运动健康App 隐私管理中是否关联了华为运动健康服务,如果未关联,是无法获取到数据的。

如何判断用户是否关联了华为运动健康服务?

方式一:在运动健康App 隐私管理中,检查是否已开启标记②中的华为运动健康服务。

cke_20063.png

方式二:隐私接口请求时,在Headers中会返回x-health-app-privacy,需确保返回的值为1,1表示用户在运动健康App中已授权。

cke_16719.png

cke_18182.png

方式三:调用隐私授权状态查询接口进行判断:

隐私授权状态查询接口:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-References/get-privacy-records-0000001058868980

cke_12966.png

如果未关联华为运动健康服务,开发者可以怎么做?

1、可以提示用户在运动健康App中开启华为运动健康服务开关:

cke_10869.png

2、可以根据华为运动健康App开放授权指南通过Health Kit云侧提供的H5页面关联华为运动健康服务:

华为运动健康App开放授权:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/server-app-auth-example-0000001071757151

 

【问题描述2】

查询隐私接口的时候,返回的状态为3。这是由于什么原因引起的?该怎么处理?

 

【解决方案】

1、3表示非华为运动健康App用户(不能授权),意思是用户没有使用过华为运动健康App,未关联华为运动健康服务。

cke_7582.png

cke_9030.png

2、隐私接口返回状态码3时:

1)可以进行相关提示,比如:“非华为运动健康App用户”(仅做参考)。

2)可以根据华为运动健康App开放授权指南通过Health Kit云侧提供的H5页面关联华为运动健康服务。

注意,一般为3的用户都没有产生过数据,关联华为运动健康服务后,也存在查询数据返回空的情况。

华为运动健康App开放授权:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/server-app-auth-example-0000001071757151

调用示例:

https://oauth-login.cloud.huawei.com/oauth2/v3/authorize?response_type=code&client_id=106804381&redirect_uri=https%3A%2F%

URL中的参数client_id和redirect_uri是固定的,您不需要任何操作,URL中仅支持修改以下参数:

cke_3914.png

cke_5349.png

用户连接成功后,需要用户手动关闭此页面:

cke_1689.png

3、针对您隐私接口返回3及运动健康App中查询有数据的情况,请检查用户登录的是否为同一账号,请使用运动健康App中有数据的账号进行登录授权Health Kit。

 

 欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh