先获取当前用户对小程序的授权状态
使用wx.getSetting(Object object)先获取用户的当前设置。返回值是小程序已经向用户请求过的权限。(1)获取成功之后使用wx.authorize向用户发起微信步数(scope.werun)授权请求。授权成功scope.werun的值为true
(2)如果用户拒绝授权,使用wx.showModa弹框提示用户必须授权才能获取微信运动数据,并提示在小程序右上角[设置]中开启授权
if(!res.authSetting['scope.werun']){//提醒用户授权wx.authorize({scope: 'scope.werun',success(){self.getWeRunData()},fail(){//如果用户拒绝授权,提示用户必须授权才能获取微信运动数据,并提示如何授权wx.showModal({title: '读取微信运动失败',content:'请在小程序右上角[设置]中开启授权'})}})}
授权成功读取用户的微信运动数据
创建自定义函数,调用微信步数的接口;调取成功后,再创建一个云函数,使用wx.cloud.callFunction调用云函数,将加密的数据进行解密(获取的数据是加密的)在云函数index.js中再新建函数,用于同步微信运动数据,将数据存入集合中(数据库)需要注意的是:cloud.getWXContext()可以自动获取APPID和OPENID等
// 读取用户的微信运动数据getWeRunData(){wx.getWeRunData({success (res) {// 调用云函数,将加密的数据进行解密wx.cloud.callFunction({name: 'deswerundata', data: {weRunData: wx.cloud.CloudID(res.cloudID) // 这个 CloudID 值到云函数端会被替换 } }).then(res=>{console.log(res)})}})},
// 创建函数,用于同步微信运动数据// 当云函数中有对数据库的操作,需要加上await配合asyncfunction GrowthValue(weRunData) {const context = cloud.getWXContext()weRunData.forEach(async item => {await db.collection('user_growth_value').add({data: {_openid: context.OPENID,date: db.serverDate(), // 获取这条记录插入到数据库的时间changeGrowthValue: item.step,operation: '微信运动',timestamp: item.timestamp,orderId: '',noteId: ''}})}