使用cryptojs解密encryptedData,获取微信步数

这个方法在新的微信开发者工具不能用了,因为为了安全,不能把appsecrect写在前端代码里面。后面使用了云函数获取微信步数,很方便。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

本人是前端新手,想做一个运动类微信小程序,想把微信步数放到自己的小程序里面。查阅微信官方文档,给出的解决方法是先调用wx.login(), 再调用wx.getWeRunData(). 得到encryptedData,拿去后端解密。我这不是在做前端吗,怎么还要写个后端专门解密?
后端解密就后端解呗,难道我一个新手村的,还能改变游戏规则?
官方解密代码偏偏没有java的,在网上搜索解密方法,找了一个星期,给我找到一个使用cryptojs解密encryptedData,直接写在微信开发者工具,前端就可以解密了。
首先下载cryptojs文件,放在utils下
下载

安装

$ npm install crypto-js

在utils下创建RdWXBizDataCrypt.js文件,代码如下

/*** Created by rd on 2017/5/4.*/
// 引入CryptoJS
var Crypto = require('cryptojs/cryptojs.js').Crypto;
var app = getApp();function RdWXBizDataCrypt(appId, sessionKey) {this.appId = appIdthis.sessionKey = sessionKey
}RdWXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) {// base64 decode :使用 CryptoJS 中 Crypto.util.base64ToBytes()进行 base64解码var encryptedData = Crypto.util.base64ToBytes(encryptedData)var key = Crypto.util.base64ToBytes(this.sessionKey);var iv = Crypto.util.base64ToBytes(iv);// 对称解密使用的算法为 AES-128-CBC,数据采用PKCS#7填充var mode = new Crypto.mode.CBC(Crypto.pad.pkcs7);try {// 解密var bytes = Crypto.AES.decrypt(encryptedData, key, {asBpytes:true,iv: iv,mode: mode});var decryptResult = JSON.parse(bytes);} catch (err) {console.log(err)}if (decryptResult.watermark.appid !== this.appId) {console.log(err)}return decryptResult
}module.exports = RdWXBizDataCrypt

在你要放置解密信息的页面的js页面,写如下代码

// pages/step-counting/strp-counting.js
const app = getApp()
var WXBizDataCrypt = require('../../utils/RdWXBizDataCrypt.js');
var AppId = '你的appid'
var AppSecret = '你的appsecrect'
Page({data: {userInfo: {},hasUserInfo: false,canIUse: wx.canIUse('button.open-type.getUserInfo'),canIUseGetUserProfile: false,canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName'),// 如需尝试获取用户信息可改为falsestepInfoList:[]
},
globalData: {userInfo: null},//获取步数
getRunData:function(cb){var that = thisif(this.globalData.userInfo){typeof cb == "function" && cb(this.globalData.userInfo)}else{//调用登录接口,获取 codewx.login({success: function (res) {//发起网络请求wx.request({url: 'https://api.weixin.qq.com/sns/jscode2session',data:{appid:AppId,secret:AppSecret,js_code:res.code,grant_type:'authorization_code'},header: {  "Content-Type": "application/x-www-form-urlencoded"}, method: 'GET', success: function(res){var pc = new WXBizDataCrypt(AppId, res.data.session_key)wx.getWeRunData({success: function (res) {var data = pc.decryptData(res.encryptedData , res.iv)console.log('解密后 data: ', data)that.setData({stepInfoList:data.stepInfoList})}})},fail: function(res) {},complete: function(res) {}});}})}},bindViewTap() {wx.navigateTo({url: '../logs/logs'})},onLoad() {if (wx.getUserProfile) {this.setData({canIUseGetUserProfile: true})}this.getRunData()}})

我只需要微信步数,放在了stepInfoList里面。如果想要其他数据,可以改wx.getWeRunData

使用cryptojs解密encryptedData,获取微信步数相关推荐

  1. 开发笔记 | JAVA获取微信步数+日周月排行榜的实现

    目录 功能描述 微信步数同步 获取我当日的步数 日排行,周排行,月排行榜的实现 功能描述 实现微信步数的同步(也就是获取当前的微信步数更新至数据库) 实现获取我当日的微信步数的查询 实现按照日排行,周 ...

  2. uni-app利用uniCloud获取微信步数并将数据写入数据库

    uni-app利用uniCloud获取微信步数并将数据写入数据库 本项目依赖了uni-id 只是毕业设计,想法不完善,没有对用户授权失败做处理,如果编写的时候需要注意 第一步:调用wx.login() ...

  3. uniapp+egg.js获取微信步数(wx.getWeRunData)

    uniapp 调用uni.login()获取code 调用wx.getWeRunData()获取encryptedData.iv 请求后端接口,传递code.encryptedData.iv参数 cr ...

  4. 微信步数C语言程序,获取微信步数 - osc_1v2pb1nt的个人空间 - OSCHINA - 中文开源技术交流社区...

    const util = require('../../utils/util.js') Page({ /** * 页面的初始数据 */ data: { runData:[], }, /** * 生命周 ...

  5. 自己的服务解密,获取微信小程序用户的手机号码

    1.小程序传参数js_code(用户获取session_key)和encryptedData.vi(用于解密手机号) 发送http请求调接口: https://api.weixin.qq.com/sn ...

  6. 微信小程序获取微信用户步数

    小程序开发代码 -js // index.js // 获取应用实例 const app = getApp()Page({data: {motto: 'Hello World',userInfo: {} ...

  7. uniapp获取微信运动步数

    wx.getWeRunData接口文档 先调用login换取code,然后调用wx.getWeRunData,在成功的回调中调用后端同学的接口,传code,iv,encryptedData,其实后端不 ...

  8. 利用 node.js 云函数解密获取微信小程序的手机号码等加密信息 encryptedData 的内容。

    首先你必须会用微信小程序的云函数功能: 1.创建一个名为token的云函数 2.在云开发的云函数管理中添加对应的token云函数 3.在开发工具中编辑云函数token 4.点击右键,安装并部署 大致是 ...

  9. 获取this_小程序获取微信运动步数并集成echarts报表显示

    需求 现在运动计步非常的火,大家常用的计步工具一般有keep.咕咚.微信运动和其他移动设备等,本文是基于微信小程序获取用户的微信运动数据并可视化呈现出来. 先看一下最终实现效果: 微信运动规则 在开发 ...

最新文章

  1. 华为发布《AR洞察与应用实践白皮书》,提出用5G点燃AR,用AR照亮5G
  2. 金星可能存在生命?科学家发现大气中有磷化氢,剧毒气体或是生物代谢产物...
  3. docker笔记1----Get Docker
  4. sublime text 安装Package Control
  5. STM32 HAL库、标准外设库、LL库(STM32 Embedded Software)
  6. Maximum Subsequence Sum最大子列和问题(c语言实现)
  7. 深度优先遍历解决连通域求解问题-python实现
  8. pg安装部署linux_简简单单基于docker部署微服务网关
  9. 图像处理常见算法(C++/OpenCV)
  10. rpm yum 删除mysql
  11. 计算机对口模拟试题,计算机专业对口升学模拟试题
  12. 在VScode上使用latex编辑pdf
  13. 地质大学计算机学院实验室,中国地质大学
  14. PyCharm的Requirement already satisfied 解决方法
  15. 【openGL】安装篇(上):Windows
  16. 第二届北京职教国际青年创新创业技能大赛启动
  17. Hadoop学习5-3:HDFS回收站
  18. 奥数-------i3*6528=3i*8256 让我们猜猜i的值
  19. 网页vnc工具NoVnc
  20. 第三个python小功能完成后记录——二、必要模块函数记忆

热门文章

  1. OSChina 周三乱弹 ——知道你的女朋友被谁抢走了吧?
  2. 如何让企业微信不显示「已读」
  3. 第2章第4节:文本框的使用:使用文本框在幻灯片显示文字内容 [PowerPoint精美幻灯片实战教程]
  4. C/C++类库大全(附github连接)
  5. bootstrapTable点击行事件添加
  6. 免费实时语音识别和即时翻译软件
  7. BetterZip的三大使用模式
  8. Base64加密方式详解
  9. 单片机设计_实时时钟(AT89C51、LCD1602、PCF8563)
  10. lucene详细介绍