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


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滑动提示效果代码分享
Mar 10 Javascript
AngularJS教程之MVC体系结构详解
Aug 16 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
Jan 05 Javascript
了解VUE的render函数的使用
Jun 08 Javascript
javascript 初学教程及五子棋小程序的简单实现
Jul 04 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
Jul 19 jQuery
微信小程序swiper组件用法实例分析【附源码下载】
Dec 07 Javascript
vue+vue-router转场动画的实例代码
Sep 01 Javascript
Vue表单及表单绑定方法
Sep 04 Javascript
vue中使用protobuf的过程记录
Oct 26 Javascript
深入了解JavaScript 的 WebAssembly
Jun 15 Javascript
浅谈 JavaScript 沙箱Sandbox
Nov 02 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
跟我学小偷程序之成功偷取首页(第三天)
2006/10/09 PHP
删除数组元素实用的PHP数组函数
2008/08/18 PHP
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
2020/06/02 PHP
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
JavaScrip常见的一些算法总结
2015/12/28 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
js实现移动端轮播图
2020/12/21 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
jquery实现的放大镜效果示例
2020/02/24 jQuery
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
2017/11/23 Python
python测试mysql写入性能完整实例
2018/01/18 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
selenium+python截图不成功的解决方法
2019/01/30 Python
python实现多进程通信实例分析
2019/09/01 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
海淘母婴商城:国际妈咪
2016/07/23 全球购物
澳大利亚相机之家:Camera House
2017/11/30 全球购物
数学系毕业生的自我评价
2014/01/10 职场文书
霸气押韵的班级口号
2014/06/09 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
企业党员岗位承诺书
2015/04/27 职场文书
2016暑期校本培训心得体会
2016/01/08 职场文书
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android
前端JavaScript大管家 package.json
2021/11/02 Javascript
Apache自带的ab压力测试工具的实现
2022/07/23 Servers