首页 > 其他分享 >微信运动接口(获取自己的微信运动数据)

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

时间:2023-02-13 16:36:59浏览次数:62  
标签:function 微信 appid 接口 encryptedData res var 运动 wx


@​​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:[]
},


onl oad: 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步,演示完毕。


标签:function,微信,appid,接口,encryptedData,res,var,运动,wx
From: https://blog.51cto.com/u_15961549/6054469

相关文章

  • 微信小程序录音与音频播放控制功能
    微信小程序录音与音频播放控制功能​​1、录音​​​​1.1案例​​​​2、音频播放控制​​​​2.1案例​​  小程序继承了微信强大的语音处理功能,提供了录音、音频播放......
  • 微信小程序地图与位置相关操作
    微信小程序地图与位置相关操作​​1、地图​​​​1.1map的API​​​​1.2简单地图示例​​​​1.3MapContext对象常用操作​​​​1.4地图操作示例​​​​2、位置​​......
  • 微信小程序+SpringBoot实现文件上传与下载
    微信小程序+SpringBoot实现文件上传与下载​​1、文件上传​​​​1.1后端部分​​​​1.1.1引入ApacheCommonsFIleUpload组件依赖​​​​1.1.2设置上传文件大小限制......
  • 75接口采集学习网址信息,顺便清理一个存入csv的坑
    对一个学习网址进行外页爬取#coding=gbk#-*-coding:uft-8-*-#@Time:2023/2/13#@Author:十架bgm#@FileName:ca213importcsvimportrequestsimportrei......
  • 手机怎么设置信用卡还款提醒?能用微信提醒吗?
    相信很多喜欢超前消费的网友对信用卡、花呗这些产品不陌生,有不少网友已经习惯了这个月花,下个月还的消费方式,其实这也是有很多好处的,只要个人有稳定的收入,并且不过度消费就......
  • Vue接口地址管理
     项目中有些时候会调用不同的的环境接口地址,统一进行管理便于切换1.static文件夹下新建config.js:(static/目录下的文件并不会被Webpack处理:它们会直接被复制到最终......
  • 63. C高级-面向接口编程
    14面向接口编程14.1案例背景一般的企业信息系统都有成熟的框架。软件框架一般不发生变化,能自由的集成第三方厂商的产品。14.2案例需求要求在企业信息系统框架中集成第......
  • ChatGPT热度再起,今天教你搭建微信小程序(附源码)
    最近几天ChatGPT的热度又重新起来了,在微信指数中搜索量一度飙升到3100万,大部分人都是看着ChatGPT的热度一点点消散,然后什么也做不了。做电商的卖账号、电话卡,做自媒体的写......
  • 微信小程序标签语言
    微信小程序标签语言1、<text> <text>表示一段行内文本,类似于HTML语言的<span>标签,多个<text>标签之间不会产生分行。在小程序中只有被<text>包围的文本才能在手机上被......
  • SpringBoot项目启动后再请求远程接口的实现方式
    场景有一个SpringBoot项目需要在启动后请求另一个远程服务拿取配置,而不是加载过程中去请求,可能会出现类没有实例化的场景,因此需要实现项目完全启动后再进行请求的场景......