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


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对checkbox操作 (循环获取)
May 20 Javascript
js日历功能对象
Jan 12 Javascript
Jquery操作radio的简单实例
Jan 06 Javascript
jQuery弹出框代码封装DialogHelper
Jan 30 Javascript
javascript实现回到顶部特效
May 06 Javascript
Angular.js如何从PHP读取后台数据
Mar 24 Javascript
JavaScript 函数模式详解及示例
Sep 07 Javascript
详解node.js平台下Express的session与cookie模块包的配置
Apr 26 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
Nov 21 Javascript
深入理解Vue官方文档梳理之全局API
Nov 22 Javascript
JavaScript 有用的代码片段和 trick
Feb 22 Javascript
如何实现echarts markline标签名显示自己想要的
Jul 20 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中单引号与双引号的区别分析
2014/08/19 PHP
yii2分页之实现跳转到具体某页的实例代码
2016/06/02 PHP
javascript字典探测用户名工具
2006/10/05 Javascript
js 日期转换成中文格式的函数
2009/07/07 Javascript
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
javascript实现文字图片上下滚动的具体实例
2013/06/28 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
jquery处理json对象
2014/11/03 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
ES6 class的应用实例分析
2019/06/27 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
python实现自动重启本程序的方法
2015/07/09 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
python中多个装饰器的调用顺序详解
2019/07/16 Python
调试Django时打印SQL语句的日志代码实例
2019/09/12 Python
Python 字典中的所有方法及用法
2020/06/10 Python
python操作链表的示例代码
2020/09/27 Python
python 如何设置守护进程
2020/10/29 Python
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
暇步士官网:Hush Puppies
2016/09/22 全球购物
Topman美国官网:英国著名的国际平价时尚男装品牌
2017/12/22 全球购物
大唐电信科技股份有限公司java工程师面试经历
2016/12/09 面试题
军神教学反思
2014/02/04 职场文书
让生命充满爱演讲稿
2014/05/10 职场文书
运动会表扬稿范文
2015/05/05 职场文书
2015小学五年级班主任工作总结
2015/05/21 职场文书
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android
青岛市的收音机研制与生产
2022/04/07 无线电