微信小程序微信運動步數處理

微信小程序的微信運動每日步數獲取

  1. 第一步,獲取session_key,用來解密必須用到的

    ①這裏,獲取session_key就不敘述了,跟獲取openid的步驟是一樣的,詳見:

    http://blog.csdn.net/llayjun/article/details/78291641

    注意:這裏要注意的是,在體驗版中,使用體驗版的appid和secret,微信小程序端是可以獲取到seesion_key和openid的,而在上線的正式版本中,使用正式的appid和secret,則會出現錯誤,具體原因,詳見上面一個鏈接

  2. 第二步,獲取encryptedData和iv,就是一些,微信步數加密後的數據

    ①這裏獲取這兩個數據,是調用wx.getWeRunData(OBJECT)這個接口獲取的,具體一些權限的判斷和處理,詳見:

    http://blog.csdn.net/llayjun/article/details/78295631

  3. 第三步,根據appid,session_key,iv來解密encryptedData,則會獲取到解密之後的數據

    ①到了這裏,請詳見:

    https://codeload.github.com/gwjjeff/cryptojs/zip/master

    使用CryptoJS解決微信小程序用戶信息解密

  4. 體驗版具體代碼(正式版需在服務器端處理數據):

    /**
      * 生命週期函數--監聽頁面加載
      */
     onLoad: function (options) {
       var that = this;
       wx.login({
         success: function(res){
           var appid = "";
           var secret = "";
           if(res.code){
             wx.request({
               url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid + '&secret=' + secret + '&js_code=' + res.code + '&grant_type=authorization_code',
               header: {
                 'content-type': 'json'
               },
               success: function(res){
                 var session_key = res.data.session_key;
                 console.log(session_key);
                 that.getData(appid,session_key);
               }
             })
           }
         }
       })
       },
    
      //獲取encryptedData(沒有解密的步數)和iv(加密算法的初始向量)
     getData: function (appid,session_key) {
       wx.getSetting({
         success: function (res) {
           console.log(res);
           if (!res.authSetting['scope.werun']) {
             wx.showModal({
               title: '提示',
               content: '獲取微信運動步數,需要開啓計步權限',
               success: function (res) {
                 if (res.confirm) {
                   //跳轉去設置
                   wx.openSetting({
                     success: function (res) {
    
                     }
                   })
                 } else {
                   //不設置
                 }
               }
             })
           } else {
             wx.getWeRunData({
               success: function (res) {
                 console.log(res);
                 console.log("appid:" + appid + "session_key:" + session_key + "encryptedData:" + res.encryptedData + "iv:" + res.iv);
                 var encryptedData = res.encryptedData;
                 var iv = res.iv;
                 //使用解密工具,鏈接地址:
                 //https://codeload.github.com/gwjjeff/cryptojs/zip/master
                 var pc = new WXBizDataCrypt(appid, session_key);
                 console.log(pc);
                 var data = pc.decryptData(encryptedData, iv)
                 console.log(data)
               },
               fail: function (res) {
                 wx.showModal({
                   title: '提示',
                   content: '開發者未開通微信運動,請關注“微信運動”公衆號後重試',
                   showCancel: false,
                   confirmText: '知道了'
                 })
               }
             })
           }
         }
       })
     },

    ​得到的結果:

    流程時序圖:

發佈了82 篇原創文章 · 獲贊 113 · 訪問量 19萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章