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


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 相关文章推荐
js使用eval解析json(js中使用json)
Jan 17 Javascript
jquery form表单序列化为对象的示例代码
Mar 05 Javascript
JavaScript制作的可折叠弹出式菜单示例
Apr 04 Javascript
简单分析javascript面向对象与原型
May 21 Javascript
Javascript实现Array和String互转换的方法
Dec 21 Javascript
jQuery操作属性和样式详解
Apr 13 Javascript
实例解析jQuery工具函数
Dec 01 Javascript
jQuery基于正则表达式的表单验证功能示例
Jan 21 Javascript
原生JS上传大文件显示进度条 php上传文件代码
Mar 27 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
Jul 23 Javascript
Vue切换div显示隐藏,多选,单选代码解析
Jul 14 Javascript
如何使用 JavaScript 操作浏览器历史记录 API
Nov 24 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 字符串 小常识
2009/06/05 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
2014/12/01 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
PHP获取文件扩展名的4种方法
2015/11/24 PHP
精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
php图像生成函数之间的区别分析
2012/12/06 Javascript
解析javascript 数组以及json元素的添加删除
2013/06/26 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
利用React Router4实现的服务端直出渲染(SSR)
2019/01/07 Javascript
angular4+百分比进度显示插件用法示例
2019/05/05 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
python3.5仿微软计算器程序
2020/03/30 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
python实现逆序输出一个数字的示例讲解
2018/06/25 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
使用GitHub和Python实现持续部署的方法
2019/05/09 Python
Django 开发环境配置过程详解
2019/07/18 Python
python hash每次调用结果不同的原因
2019/11/21 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
Python调用接口合并Excel表代码实例
2020/03/31 Python
Python flask路由间传递变量实例详解
2020/06/03 Python
Python之多进程与多线程的使用
2021/02/23 Python
美国高街时尚品牌:OASAP
2016/07/24 全球购物
设计师珠宝:Ylang 23
2018/05/11 全球购物
会计毕业生自我鉴定
2013/11/04 职场文书
2015年派出所工作总结
2015/04/24 职场文书
民事答辩状范本
2015/05/21 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
班主任工作总结范文
2015/08/13 职场文书