小程序获取用户信息(微信运动步数)

先获取当前用户对小程序的授权状态

  • 使用 wx.getSetting(Object object) 先获取用户的当前设置。返回值是小程序已经向用户请求过的权限。
  • (1)获取成功之后使用 wx.authorize 向用户发起微信步数(scope.werun )授权请求。
    授权成功scope.werun的值为true
    (2)如果用户拒绝授权,使用wx.showModa弹框提示用户必须授权才能获取微信运动数据,并提示在小程序右上角[设置]中开启授权

小程序获取用户信息(微信运动步数)_第1张图片

小程序获取用户信息(微信运动步数)_第2张图片
小程序获取用户信息(微信运动步数)_第3张图片

 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配合async
function 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: ''
        }
      })
    }

你可能感兴趣的:(小程序,前端)