微信运动接口(获取自己的微信运动数据)

微信运动接口(获取自己的微信运动数据)

@toc

1、微信运动接口wx.getWeRunData()

1.1 实现步骤

该接口获取用户过去30天微信运动步数。该接口比较复杂,具体操作步骤如下:

先调用wx.login()接口获取code

使用wx.request()接口向地址https://api.weixin.qq.com/sns/jscode2session?appid= appid &secret= secret &js_code= res.code &grant_type=authorization_code发送网络请求,此时需要发送appid、secret和code3个参数,返回session_key。

调用wx.getWeRunData()接口返回encryptedData和iv,其中encryptedData是加密的步数信息,需要解密为明文。

在小程序中使用CryptoJS组件对encryptedData进行解密,此时需要用到appid、session_key和iv,解密得到明文的步数信息是小程序的可读信息。

1.2 接口参数

属性

类型

默认值

必填

说明

success

function

接口调用成功的回调函数

fail

function

接口调用失败的回调函数

complete

function

接口调用结束的回调函数(调用成功、失败都会执行)

object.success回调函数:

属性

类型

说明

最低版本

encryptedData

string

包括敏感数据在内的完整用户信息的加密数据,详细见加密数据解密算法。解密后得到的数据结构见后文

iv

string

加密算法的初始向量,详细见加密数据解密算法

cloudID

string

敏感数据对应的云 ID,开通云开发的小程序才会返回,可通过云调用直接获取开放数据,详细见云调用直接获取开放数据

2.7.0

官网示例代码:

wx.getWeRunData({

success (res) {

// 拿 encryptedData 到开发者后台解密开放数据

const encryptedData = res.encryptedData

// 或拿 cloudID 通过云调用直接获取开放数据

const cloudID = res.cloudID

}

})

2、获取运动数据案例

本例使用wx.getWeRunData()接口获取用户的运动步数并显示。解密的CryptoJS组件可以在https://www.npm.js.com/package/crypto-js下载得到。如下图圈起来的所示:

getWeRunData.wxml:

{{30-index}}天前你运动了{{item.step}}步

getWeRunData.js:

var DataCrypt = require('../../utils/DataCrypt.js');

Page({

/**

* 页面的初始数据

*/

data: {

stepInfoList:[]

},

onLoad: function (options) {

var that = this;

wx.login({

success: function (res) {

var appid = "你的appid";

var secret = "你的小程序密钥";

if (res.code) {

wx.request({

url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appid + '&secret=' + secret + '&js_code=' + res.code + '&grant_type=authorization_code',

header: { 'content-type': 'json' },

success: function (res) {

var session_key = res.data.session_key;

console.log("seccion_key:"+session_key);

that.getWeRunData(appid, session_key); }

})

}

}

})

},

//获取encryptedData(没有解密的步数)和iv(加密算法的初始向量)

getWeRunData: function (appid,session_key) {

var that=this

wx.getSetting({ success: function (res) {

console.log(res);

if (!res.authSetting['scope.werun'])

{

wx.authorize({

scope: 'scope.werun',

success:()=>{

console.log("授权测试成功!!!")

}

})

wx.getWeRunData({

success: function (res) {

console.log(res);

var encryptedData = res.encryptedData;

var iv = res.iv;

var pc = new DataCrypt(appid, session_key);

console.log(pc);

var data = pc.decryptData(encryptedData, iv)

console.log("------" + data.stepInfoList[30].step)

that.setData({

stepInfoList: data.stepInfoList})

},

fail: function (res) { console.log("获取数据失败") }

})

// wx.showModal

// ({

// title: '权限提示',

// content: '获取微信运动步数需要开启计步权限',

// success: function (res)

// {

// if (res.confirm) {

// //跳转去设置

// wx.openSetting({

// success: function (res)

// {

// console.log("authSetting:"+res.authSetting)

// }

// })

// }

// }

// })

} else {

wx.getWeRunData({

success: function (res) {

console.log(res);

var encryptedData = res.encryptedData;

var iv = res.iv;

var pc = new DataCrypt(appid, session_key);

console.log(pc);

var data = pc.decryptData(encryptedData, iv)

console.log("------" + data.stepInfoList[30].step)

that.setData({

stepInfoList: data.stepInfoList})

},

fail: function (res) { console.log("获取数据失败") }

})

}

}

})

},

/**

* 生命周期函数--监听页面初次渲染完成

*/

onReady: function () {

},

/**

* 生命周期函数--监听页面显示

*/

onShow: function () {

},

/**

* 生命周期函数--监听页面隐藏

*/

onHide: function () {

},

/**

* 生命周期函数--监听页面卸载

*/

onUnload: function () {

},

/**

* 页面相关事件处理函数--监听用户下拉动作

*/

onPullDownRefresh: function () {

},

/**

* 页面上拉触底事件的处理函数

*/

onReachBottom: function () {

},

/**

* 用户点击右上角分享

*/

onShareAppMessage: function () {

}

})

这里我并没有给出我的appid和secret,敏感数据不要给别人看,你去你小程序后台用自己的。

本例中CryptoJS组件属于网络开源项目,下载之后引入到小程序项目中,DataCrypt.js文件的作用是吧CryptoJS组件引入到小程序项目。wx.getWeRunData()接口获取的encryptedData经过CryptoJS组件解密之后得到的明文数据data中包含了微信运动数据,具体的数据在data.stepInfoList数组中,该数组共31条记录,对应当日和前30天的运动步数数据。其中,stepInfoList[0]是30天前的运动步数数据,setpInfoList[30]是当日的运动步数数据。

2.1 真机调试

点击允许之后,可以看到我们的微信运动数据就出来了。

验证下今天的数据是否正确,查看下自己的微信运动数据:

可以看到,今天的数据和接口获取到的第0天的数据都是14972步,演示完毕。

💡 相关推荐

C罗再续前缘,沙特胜利留人成功,未来或以世界杯为落幕大戏
游戏重名怎么办 解决游戏命名冲突的方法
365bet体育投注在线

游戏重名怎么办 解决游戏命名冲突的方法

📅 07-23 👀 6810
二十大关键词|我国为什么要加快建设网络强国
365bet体育投注在线

二十大关键词|我国为什么要加快建设网络强国

📅 09-21 👀 2499