使用微信小程序wx.getWeRunData获取近30天步数信息

2022-03-18 13:07 栏目:技术开发 查看(10175)

根据近期微构网络受到的长沙小程序开发需求来看,当前越来越多的小程序有获取步数的需求,往往就是用于小程序某个用户互动模块。比如捐赠步数做公益(平台直接补贴)、步数兑换积分等等。微信官方文档中描述可以通过wx.getWeRunData获取到encryptedData、iv等返回参数值,那么如何完整地实现获取微信运动的信息呢。根据官方文件可知,其实跟其他的信息获取是类似的流程,比如微信绑定的手机号码获取。基本步骤如下:

1、通过wx.login获取到code(小程序客户端)。

2、通过wx.getWeRunData获取到encryptedData、iv(小程序客户端)。

3、向后台服务端发送code、encryptedData、iv(通过小程序客户端的wx.request)。

4、通过jscode2session把code交换得到解密sessionKey(后台服务端)。

5、通过sessionKey、encryptedData、iv解密得到明文数据(后台服务端)。

通过以上步骤我们就可以获取到我们需要得到的步数信息,timestamp为时间(如2022-03-20的时间戳)、step为步数,可以获取最近30天的(含当天的)。

QQ截图20220318125135

有了上面的步骤,就可以快速写出前后端的实现代码了,当然为了方便理解这里直接采用未经过封装的源代码。

小程序前端请求代码:

getWeRunData:function(){
    wx.login({
      success(res) {
        wx.getWeRunData({
          success (r) {
            wx.request({
              method:'POST',
              url: 'getWeRunData.php',//后台接口
              data: {
                code:res.code,//通过wx.login获取到code
                encryptedData:r.encryptedData,
                iv:r.iv
              },
              success (d) {
                console.log(d);//得到后台返回的明文数据
              }
            })
          }
        })
      }
    })  
}

后台服务端解密代码:

$post=input('param.');
$params = [
	'appid' =>'appid', //小程序appid
	'secret' => 'secret', //小程序app secret
	'js_code' => $post['code'], 
	'grant_type' => 'authorization_code' //grant_type
];
$res = $this->http('https://api.weixin.qq.com/sns/jscode2session', $params);//获取sessionKey 
$reqData = json_decode($res['result'], true);
$sessionKey = $reqData['session_key'];
$pc= new WXBizDataCrypt($params['appid'],$sessionKey);
$errCode = $pc->decryptData($post['encryptedData'], $post['iv'],$data);//解密密文
$data = json_decode($data, true);
print_r($data);

此外需要注意的是wx.getWeRunData需要获得用户授权(scope.werun),如果首次请求需要用户同意授权获取微信运动数据。

QQ截图20220318130544

以上就是获取微信运动近30天数据的基本流程和简易demo,如果你有这方面场景需求,欢迎与我们一起沟通交流。

与我们的项目经理联系
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

转载请注明出处:使用微信小程序wx.getWeRunData获取近30天步数信息 - 微构网络
分享: