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


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 相关文章推荐
仿jQuery的siblings效果的js代码
Aug 09 Javascript
JavaScript 用Node.js写Shell脚本[译]
Sep 20 Javascript
window.navigate 与 window.location.href 的使用区别介绍
Sep 21 Javascript
js模仿hover的具体实现代码
Dec 30 Javascript
JSON+Jquery省市区三级联动
Jan 13 Javascript
学习JavaScript设计模式之观察者模式
Apr 22 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
May 18 Javascript
JSP基于Bootstrap分页显示实例解析
Jun 12 Javascript
使用微信小程序开发弹出框应用实例详解
Oct 18 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
Dec 25 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
Apr 10 Javascript
JS正则表达式验证端口范围(0-65535)
Jan 06 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/03/08 PHP
PHP安全配置详细说明
2011/09/26 PHP
php冒泡排序与快速排序实例详解
2015/12/07 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
2016/03/15 PHP
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
JS中Iframe之间传值及子页面与父页面应用
2013/03/11 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
第六章之辅组类与响应式工具
2016/04/25 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
JavaScript实现无穷滚动加载数据
2017/05/06 Javascript
使用Node.js实现简易MVC框架的方法
2017/08/07 Javascript
微信小程序富文本渲染引擎的详解
2017/09/30 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
select标签设置默认选中的选项方法
2018/03/02 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
使用ng-packagr打包Angular的方法示例
2018/09/21 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
2018/10/25 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
使用python实现扫描端口示例
2014/03/29 Python
Python中的Classes和Metaclasses详解
2015/04/02 Python
【Python】Python的urllib模块、urllib2模块批量进行网页下载文件
2016/11/19 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
python简单区块链模拟详解
2019/07/03 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
英国川宁茶官方网站:Twinings茶
2019/05/21 全球购物
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
简单的大学生自我鉴定
2014/02/18 职场文书
锦旗标语大全
2014/06/23 职场文书
2015年计算机教师工作总结
2015/07/22 职场文书
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技