扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
根据近期微构网络受到的长沙小程序开发需求来看,当前越来越多的小程序有获取步数的需求,往往就是用于小程序某个用户互动模块。比如捐赠步数做公益(平台直接补贴)、步数兑换积分等等。微信官方文档中描述可以通过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天的(含当天的)。
有了上面的步骤,就可以快速写出前后端的实现代码了,当然为了方便理解这里直接采用未经过封装的源代码。
小程序前端请求代码:
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),如果首次请求需要用户同意授权获取微信运动数据。
以上就是获取微信运动近30天数据的基本流程和简易demo,如果你有这方面场景需求,欢迎与我们一起沟通交流。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流