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


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 相关文章推荐
纯CSS打造的导航菜单(附jquery版)
Aug 07 Javascript
Javascript事件实例详解
Nov 06 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
Feb 07 Javascript
jQuery操作表单常用控件方法小结
Mar 23 Javascript
javascript检测两个数组是否相似
May 19 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
Apr 21 Javascript
js实现字符全排列算法的简单方法
May 01 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
Aug 16 Javascript
Vue2.0用户权限控制解决方案的示例
Feb 10 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
Oct 12 Javascript
微信小程序自定义模态弹窗组件详解
Dec 24 Javascript
js+css3实现简单时钟特效
Sep 13 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从右向左/从左向右截取字符串的实现方法
2011/11/28 PHP
PHP fopen 读取带中文URL地址的一点见解
2012/09/25 PHP
php 保留字列表
2012/10/04 PHP
php统计文章排行示例
2014/03/04 PHP
ThinkPHP学习笔记(一)ThinkPHP部署
2014/06/22 PHP
php计算指定目录下文件占用空间的方法
2015/03/13 PHP
PHP超全局变量实现原理及代码解析
2020/09/01 PHP
取键盘键位ASCII码的网页
2007/07/30 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
BootStrap Table对前台页面表格的支持实例讲解
2016/12/22 Javascript
完美解决axios跨域请求出错的问题
2018/02/05 Javascript
基于vue和react的spa进行按需加载的实现方法
2018/09/29 Javascript
JavaScript继承与聚合实例详解
2019/01/22 Javascript
在node中使用jwt签发与验证token的方法
2019/04/03 Javascript
基于vue实现一个禅道主页拖拽效果
2019/05/27 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
vue页面引入three.js实现3d动画场景操作
2020/08/10 Javascript
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
[30:00]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第二场 11.28
2020/12/01 DOTA
Python Trie树实现字典排序
2014/03/28 Python
详解Python多线程
2016/11/14 Python
Python探索之实现一个简单的HTTP服务器
2017/10/28 Python
Python 中Django安装和使用教程详解
2019/07/03 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
2019/07/04 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
简单了解python字符串前面加r,u的含义
2019/12/26 Python
Matplotlib自定义坐标轴刻度的实现示例
2020/06/18 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
村道德模范事迹材料
2014/08/28 职场文书
个人委托书如何写
2014/09/25 职场文书
元宵节寄语大全
2015/02/27 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
MySQL的索引你了解吗
2022/03/13 MySQL