小程序获取微信运动步数

第一步,获取session_key,用来解密必须用到的
代码为:

wx.login({
    success: function (res) {
      var appid = "wx1b4e5e75***48af1";
      var secret = "8eb5b7c6af68****af2995b6a8758";
      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);
          }
        })
      }
    }
  })

注意:这里要注意的是,在体验版中,使用体验版的appid和secret,微信小程序端是可以获取到seesion_key和openid的,而在上线的正式版本中,使用正式的appid和secret,则会出现错误。

第二步,获取encryptedData和iv,就是一些,微信步数加密后的数据
代码为:

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: '知道了'
            })
          }
        })
 

第三步,根据appid,session_key,iv来解密encryptedData,则会获取到解密之后的数据
https://codeload.github.com/gwjjeff/cryptojs/zip/master

使用CryptoJS解决微信小程序用户信息解密
[https://codeload.github.com/gwjjeff/cryptojs/zip/master]

详细 JS代码为:

/**
  * 生命周期函数--监听页面加载
  */
 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: '知道了'
             })
           }
         })
       }
     }
   })
 },
 

结果为:

 

猜你喜欢

转载自blog.csdn.net/dt1991524/article/details/81355517
今日推荐