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