掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流
根據(jù)近期微構網絡受到的長沙小程序開發(fā)需求來看,當前越來越多的小程序有獲取步數(shù)的需求,往往就是用于小程序某個用戶互動模塊。比如捐贈步數(shù)做公益(平臺直接補貼)、步數(shù)兌換積分等等。微信官方文檔中描述可以通過wx.getWeRunData獲取到encryptedData、iv等返回參數(shù)值,那么如何完整地實現(xiàn)獲取微信運動的信息呢。根據(jù)官方文件可知,其實跟其他的信息獲取是類似的流程,比如微信綁定的手機號碼獲取?;静襟E如下:
1、通過wx.login獲取到code(小程序客戶端)。
2、通過wx.getWeRunData獲取到encryptedData、iv(小程序客戶端)。
3、向后臺服務端發(fā)送code、encryptedData、iv(通過小程序客戶端的wx.request)。
4、通過jscode2session把code交換得到解密sessionKey(后臺服務端)。
5、通過sessionKey、encryptedData、iv解密得到明文數(shù)據(jù)(后臺服務端)。
通過以上步驟我們就可以獲取到我們需要得到的步數(shù)信息,timestamp為時間(如2022-03-20的時間戳)、step為步數(shù),可以獲取最近30天的(含當天的)。
有了上面的步驟,就可以快速寫出前后端的實現(xiàn)代碼了,當然為了方便理解這里直接采用未經過封裝的源代碼。
小程序前端請求代碼:
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);//得到后臺返回的明文數(shù)據(jù) } }) } }) } }) }
后臺服務端解密代碼:
$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),如果首次請求需要用戶同意授權獲取微信運動數(shù)據(jù)。
以上就是獲取微信運動近30天數(shù)據(jù)的基本流程和簡易demo,如果你有這方面場景需求,歡迎與我們一起溝通交流。
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流