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


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模拟类继承小例子
Jul 17 Javascript
jQuery UI AutoComplete 使用说明
Jun 20 Javascript
15条JavaScript最佳实践小结
Aug 09 Javascript
js判断数据类型如判断是否为数组是否为字符串等等
Jan 15 Javascript
js中window.open打开一个新的页面
Aug 10 Javascript
浅谈javascript中字符串String与数组Array
Dec 31 Javascript
js实现a标签超链接提交form表单的方法
Jun 24 Javascript
jquery实现简单实用的打分程序实例
Jul 23 Javascript
js数组操作方法总结(必看篇)
Nov 22 Javascript
vue-router路由懒加载和权限控制详解
Dec 13 Javascript
js实现的在本地预览图片功能示例
Nov 09 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
Aug 10 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中文URL编解码(urlencode()rawurlencode()
2010/07/03 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
浅谈PHP的$_SERVER[SERVER_NAME]
2017/02/04 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
很可爱的输入框
2008/08/03 Javascript
js生成随机数(指定范围)的实例代码
2016/07/10 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
在vue中使用G2图表的示例代码
2019/03/19 Javascript
layUI使用layer.open,在content打开数据表格,获取值并返回的方法
2019/09/26 Javascript
jquery实现加载更多"转圈圈"效果(示例代码)
2020/11/09 jQuery
Python中的Numpy入门教程
2014/04/26 Python
python实现从字典中删除元素的方法
2015/05/04 Python
Python异步操作MySQL示例【使用aiomysql】
2019/05/16 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
2019/08/05 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
Python3 实现爬取网站下所有URL方式
2020/01/16 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
python怎么调用自己的函数
2020/07/01 Python
python正则表达式的懒惰匹配和贪婪匹配说明
2020/07/13 Python
Python容器类型公共方法总结
2020/08/19 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
史蒂夫·马登加拿大官网:Steve Madden加拿大
2017/11/18 全球购物
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
高中运动会广播稿
2014/01/21 职场文书
考试诚信承诺书
2014/05/23 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
小学生校园广播稿
2014/09/28 职场文书
2014年材料员工作总结
2014/11/19 职场文书
申请吧主发表的感言
2015/08/03 职场文书
Nginx安装完成没有生成sbin目录的解决方法
2021/03/31 Servers