微信小程序获取微信运动步数的实例代码


Posted in Javascript onJuly 20, 2017

现在运动计步很火,无论是蚂蚁森林,还是微信上都很火爆,本文介绍了微信小程序微信运动步数的实例代码,分享给大家

微信小程序API-微信运动
https://mp.weixin.qq.com/debug/wxadoc/dev/api/we-run.html#wxgetwerundataobject

思路: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");
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Ajax::prototype 源码解读
Jan 22 Javascript
jquery ajax 调用失败的原因示例介绍
Sep 27 Javascript
通过javascript把图片转化为字符画
Oct 24 Javascript
js纯数字逐一停止显示效果的实现代码
Mar 16 Javascript
浅谈JavaScript中数组的增删改查
Jun 20 Javascript
AngularJs自定义服务之实现签名和加密
Aug 02 Javascript
javascript设计模式之单体模式学习笔记
Feb 15 Javascript
karma+webpack搭建vue单元测试环境的方法示例
May 24 Javascript
vue.js删除列表中的一行
Jun 30 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
Oct 26 jQuery
Vue组件教程之Toast(Vue.extend 方式)详解
Jan 27 Javascript
浅谈javascript如何获取文件后缀名
Aug 07 Javascript
Javascript别踩白块儿(钢琴块儿)小游戏实现代码
Jul 20 #Javascript
angular动态删除ng-repaeat添加的dom节点的方法
Jul 20 #Javascript
如何使用JS在HTML中自定义字符串格式化
Jul 20 #Javascript
详解用webpack把我们的业务模块分开打包的方法
Jul 20 #Javascript
关于webpack代码拆分的解析
Jul 20 #Javascript
webpack学习笔记之代码分割和按需加载的实例详解
Jul 20 #Javascript
node+vue实现用户注册和头像上传的实例代码
Jul 20 #Javascript
You might like
PHP实现变色验证码实例
2014/01/06 PHP
php实现的操作excel类详解
2016/01/15 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
php实现微信企业付款到个人零钱功能
2018/10/09 PHP
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
jquery-easyui关闭tab自动切换到前一个tab
2010/07/29 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
详解JavaScript基本类型和引用类型
2015/12/09 Javascript
Node.js程序中的本地文件操作用法小结
2016/03/06 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
vue 点击展开显示更多(点击收起部分隐藏)
2019/04/09 Javascript
如何在Vue中抽离接口配置文件
2019/10/31 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
Vue中点击active并第一个默认选中功能的实现
2020/02/24 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
Django中URLconf和include()的协同工作方法
2015/07/20 Python
python开发之函数定义实例分析
2015/11/12 Python
Python类的动态修改的实例方法
2017/03/24 Python
pygame实现弹力球及其变速效果
2017/07/03 Python
Python实现模拟登录网易邮箱的方法示例
2018/07/05 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
印尼最大的婴儿用品购物网站:Orami
2017/09/28 全球购物
string = null 和string = ''的区别
2013/04/28 面试题
自荐信写法介绍
2014/01/25 职场文书
《灯光》教学反思
2014/02/08 职场文书
2015年度优秀员工推荐信
2015/03/23 职场文书
学校开除通知书
2015/04/25 职场文书
聘用合同范本
2015/09/21 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers