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


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实现的一个include函数
Jul 21 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
Apr 25 Javascript
浅谈angularJS 作用域
Jul 05 Javascript
js获取表格的行数和列数的方法
Oct 23 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
Nov 30 Javascript
jQuery实现div横向拖拽排序的简单实例
Jul 13 Javascript
JS实现的表格行上下移动操作示例
Aug 03 Javascript
JS中数组重排序方法
Nov 11 Javascript
基于jquery实现九宫格拼图小游戏
Nov 30 jQuery
Vue使用axios出现options请求方法
May 30 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
Jan 16 Javascript
Vue实现导航栏菜单
Aug 19 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 图片文件上传实现代码
2010/12/29 PHP
php自定义的格式化时间示例代码
2013/12/05 PHP
常见php数据文件缓存类汇总
2014/12/05 PHP
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
PHP操作mysql数据库分表的方法
2016/06/09 PHP
PHP中overload与override的区别
2017/02/13 PHP
php头像上传预览实例代码
2017/05/02 PHP
PHP堆栈调试操作简单示例
2018/06/15 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
使用jQuery的ajax功能实现的RSS Reader 代码
2009/09/03 Javascript
JavaScript中String和StringBuffer的速度之争
2010/04/01 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
用jQuery模拟select下拉框的简单示例代码
2014/01/26 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
JavaScript数组的一些奇葩行为
2016/01/25 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
2016/10/09 Javascript
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
jQuery实现遍历复选框的方法示例
2017/03/06 Javascript
Vue表单验证插件的制作过程
2017/04/01 Javascript
每周一练 之 数据结构与算法(Stack)
2019/04/16 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
python 控制语句
2011/11/03 Python
python算法学习之计数排序实例
2013/12/18 Python
详解python的ORM中Pony用法
2018/02/09 Python
python实现杨氏矩阵查找
2019/03/02 Python
​如何愉快地迁移到 Python 3
2019/04/28 Python
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
销售主管岗位职责范本
2014/02/14 职场文书
工地安全标语
2014/06/07 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis
利用JavaScript写一个简单计算器
2021/11/27 Javascript
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers