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


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 相关文章推荐
JavaScript中使用replace结合正则实现replaceAll的效果
Jun 04 Javascript
一次失败的jQuery优化尝试小结
Feb 06 Javascript
JavaScript实现网页上的浮动广告的简单方法
Jun 14 Javascript
extjs两个tbar问题探讨
Aug 08 Javascript
JavaScript通过prototype给对象定义属性用法实例
Mar 23 Javascript
js实现仿爱微网两级导航菜单效果代码
Aug 31 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
Jan 18 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
Jul 14 Javascript
javascript中获取元素标签中间的内容的实现方法
Oct 08 Javascript
微信小程序 特效菜单抽屉效果实例代码
Jan 11 Javascript
新版vue-cli模板下本地开发环境使用node服务器跨域的方法
Apr 03 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
Sep 28 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
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
phpmyadmin导入(import)文件限制的解决办法
2009/12/11 PHP
PHP数组操作汇总 php数组的使用技巧
2011/07/17 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
ThinkPHP实现动态包含文件的方法
2014/11/29 PHP
php延迟静态绑定实例分析
2015/02/08 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
详解js图片轮播效果实现原理
2015/12/17 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
vue的mixins属性详解
2018/03/14 Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
2018/04/08 Javascript
微信小程序实现聊天对话(文本、图片)功能
2018/07/06 Javascript
vue 扩展现有组件的操作
2020/08/14 Javascript
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
Python3匿名函数用法示例
2018/07/25 Python
解决Python运行文件出现out of memory框的问题
2018/12/03 Python
django使用多个数据库的方法实例
2021/03/04 Python
css3中用animation的steps属性制作帧动画
2019/04/25 HTML / CSS
基于 HTML5 WebGL 实现的垃圾分类系统
2019/10/08 HTML / CSS
HTML5是什么 HTML5是什么意思 HTML5简介
2012/10/26 HTML / CSS
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
英国家喻户晓的家居商店:The Range
2019/03/25 全球购物
c/c++某大公司的两道笔试题
2014/02/02 面试题
Linux如何压缩可执行文件
2014/03/27 面试题
工作表现评语
2014/01/19 职场文书
管理提升方案
2014/06/04 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
办公室文员岗位职责
2015/02/04 职场文书
2015年学生会干事工作总结
2015/04/09 职场文书
反邪教警示教育活动总结
2015/05/09 职场文书