微信小程序开发之解密微信运动数据
凌雪 2018-10-10 来源 :网络 阅读 1559 评论 0

摘要:本文将带你了解微信小程序开发之解密微信运动数据,希望本文对大家学微信有所帮助。

本文将带你了解微信小程序开发之解密微信运动数据,希望本文对大家学微信有所帮助。


思路:wx.login获取的code请求获取的session_key,wx.getWeRunData获取的iv,encryptData,将它们一起发送到后台解密就行了。安全顾虑,因为只是示例所以直接传递session_key了,为了安全最好按照下图的方式加密后存储到redis中再传递key。小程序端代码get3rdSession: function () {
    let that = this
    wx.request({
      url:   'https://localhost/login.php',
      data: {
        code: this.data.code
      },
      method: 'GET', // OPTIONS, GET,   HEAD, POST, PUT, DELETE, TRACE, CONNECT
      success: function (res) {
        var sessionId =   res.data;
        that.setData({ sessionId:   sessionId })
          wx.setStorageSync('sessionId', sessionId)
        that.decodeUserInfo()
      }
    })
  },
  decodeUserInfo: function () {
    let that = this
    wx.request({
      url:   'https://localhost/decrypt.php',
      data: {
        encryptedData:   that.data.encryptedData,
        iv: that.data.iv,
        session: wx.getStorageSync('sessionId')
      },
      method: 'GET', // OPTIONS, GET,   HEAD, POST, PUT, DELETE, TRACE, CONNECT
      // header: {}, // 设置请求的 header
      success: function (res) {
        let todayStep =   res.data.stepInfoList.pop()
        that.setData({
          step: todayStep.step
        });
      }
    })
  },
  onLoad: function () {
    let that = this
    wx.login({
      success: function (res) {
        let code = res.code
        that.setData({ code: code   })
        wx.getWeRunData({//解密微信运动
            success(res) {
            const wRunEncryptedData =   res.encryptedData
            that.setData({   encryptedData: wRunEncryptedData })
            that.setData({ iv: res.iv   })
            that.get3rdSession()//解密请求函数
            }
        })
      }
    })
  }后台这使用的是官方PHP版本Demo:先处理login的请求,login.php直接返回session_key,然后再一起请求decrypt.php进行解密。login.php部分代码$appid = '你的appid';
    $appsecret = '你的appsecret';
   
    $url =   'https://api.weixin.qq.com/sns/jscode2session?appid='.$appid.'&secret='.$appsecret.'&js_code='.$_GET['code'].'&grant_type=authorization_code';
   
    $content = file_get_contents($url);
    $content = json_decode($content);
    echo $content->session_key;decrypt.php部分代码$pc = new WXBizDataCrypt($appid, $sessionKey);
    $errCode = $pc->decryptData($encryptedData, $iv, $data );
   
    if ($errCode == 0) {
        print($data .   "\n");
    } else {
        print($errCode .   "\n");
    }    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之微信频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved