0
点赞
收藏
分享

微信扫一扫

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


@​​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:

<view wx:for="{{stepInfoList}}">{{30-index}}天前你运动了{{item.step}}步</view>

  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 真机调试

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

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

微信运动接口(获取自己的微信运动数据)_微信小程序_03

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

微信运动接口(获取自己的微信运动数据)_微信小程序_04

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


举报

相关推荐

0 条评论