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


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 相关文章推荐
jQuery 操作XML入门
Dec 25 Javascript
关于图片按比例自适应缩放的js代码
Oct 30 Javascript
js算法中的排序、数组去重详细概述
Oct 14 Javascript
一个CSS+jQuery实现的放大缩小动画效果
Feb 19 Javascript
jQuery手机浏览器中拖拽动作的艰难性分析
Feb 04 Javascript
浅谈JavaScript异常处理语句
Jun 26 Javascript
JavaScript中的操作符类型转换示例总结
May 30 Javascript
原生JS实现网络彩票投注效果
Sep 25 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
Mar 17 Javascript
详解Vue.use自定义自己的全局组件
Jun 14 Javascript
Vue3.0数据响应式原理详解
Oct 09 Javascript
基于JQuery和DWR实现异步数据传递
Oct 16 jQuery
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 按位与或 (^ 、&)
2013/06/21 PHP
PHP防止post重复提交数据的简单例子
2014/06/07 PHP
php树型类实例
2014/12/05 PHP
PHP类的封装与继承详解
2015/09/29 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
关于laravel模板中生成URL的几种模式总结
2019/10/18 PHP
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
artDialog+plupload实现多文件上传
2016/07/19 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
整理关于Bootstrap表单的慕课笔记
2017/03/29 Javascript
Vue无限滑动周选择日期的组件的示例代码
2018/07/18 Javascript
React 无状态组件(Stateless Component) 与高阶组件
2018/08/14 Javascript
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
[00:28]DOTA2北京网鱼队选拔赛
2015/04/08 DOTA
Python fileinput模块使用介绍
2014/11/30 Python
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
Python探索之创建二叉树
2017/10/25 Python
python读取word文档,插入mysql数据库的示例代码
2018/11/07 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
HTML5进度条特效
2014/12/18 HTML / CSS
使用HTML5中的contentEditable来将多行文本自动增高
2016/03/01 HTML / CSS
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
护士自我鉴定
2013/10/23 职场文书
Python实现Telnet自动连接检测密码的示例
2021/04/16 Python
Python 正则模块详情
2021/11/02 Python
redis复制有可能碰到的问题汇总
2022/04/03 Redis