微信小程序通过cloudid获得最近三十一天微信运动步数

我曾在前两篇博文中讲了如果微信小程序通过php后端和云函数后端解密encryptedData获得过去三十一天微信运动步数,二者的实现关键步骤是一样的,首先是申请一个appid,在appid下申请一个密钥secret,第二步前端执行wx.login获得res.code,第三步前端执行wx.getWeRunData获得encryptedData、iv,第四步后端访问api.weixin.qq.com,代入appid、secret、res.code参数,获得sessionkey,第五步用官方示例代码解码encryptedData(需要变量encryptedData、iv和sessionkey),最后前端获得解密数据输出结果。
  其实,如果用云函数我们可能更简单的后端代码就能实现,wx.getWeRunData除了获得encryptedData、iv之外,还有一个cloudID,我们可以用cloudID在后端直接获得步数,无需访问api.weixin.qq.com,后端几行代码就能搞定。
  首先,你得有一个正式appid,这里不需要申请secret。
  有了appid我们就可以新建项目了,打开开发工具,新建项目,这里选择云开发基础模板,可以看到开发工具已经为我们生成了一个quickstartFunctions的云函数,为了检测我们的含有云函数的小程序是否配置正确,可以将quickstartFunctions上传,然后任意测试一个官方的例程,比如获得openid,如果能正确输出结果,就说明我们配置是正确的,可以下一步了。
  接下来就可以新建一个获得微信步数的云函数,新建一个nodejs云函数,这里取名为wxrundata,接着编写代码,代码如下。

const cloud = require('wx-server-sdk')
cloud.init({
    env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
    return event
}

你没有看错,后端代码就是如此简单,然后上传此云函数,等待上传完成后,就可以编写前端代码,将除index以外的page全部删除,相应的app.json中index以外配置路径已删除,再将index对应的wxml、json、wxss和js的代码也全部删除,接着修改js代码如下
// pages/index/index.js

Page({

  /**
   * 页面的初始数据
   */
  data: {

  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

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

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },
 

  getrundata()
  {
   
    var that=this;
    
    wx.getWeRunData({ 
      success: function (res) {
       console.log("wx.getWeRunData成功")
      
        
         wx.cloud.callFunction(
           {
            name: 'wxrundata',
            data: {
              weRunData: wx.cloud.CloudID(res.cloudID)
              
            },
            success:function(res)
            {
             
              console.log("成功"+res.result)
              console.log(res.result.weRunData.data.stepInfoList)
              that.setData({
                steplist:res.result.weRunData.data.stepInfoList
              })
            },
            fail:function(e)
            {
              console.log("失败"+e)
            }
           },
         
         )

         
         
      
      },
    
      
      
 })
  },
 


})

再编写wxml代码,如下

<!--pages/index/index.wxml-->
<wxs module="m1">

var ts2date=function(timestamp)
{
    //timestamp默认是1970-1-1加timestamp毫秒,这里秒,所以*1000
    var date = getDate(timestamp*1000);
    var year = date.getFullYear();
    var month = ('0' + (date.getMonth() + 1)).slice(-2);
    var day = ('0' + date.getDate()).slice(-2);
    var hours = ('0' + date.getHours()).slice(-2);
    var minutes = ('0' + date.getMinutes()).slice(-2);
    var seconds = ('0' + date.getSeconds()).slice(-2);
    //const formattedDate = year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
    var formattedDate = year + '-' + month + '-' + day ;
    
    return formattedDate;
    //return "fdsf";
}
module.exports.ts2date=ts2date;


</wxs>
<button type="warn" plain="true" bind:tap="getrundata">获取微信步数</button>
<view wx:for="{{steplist}}"> {{m1.ts2date(item.timestamp)}} {{item.step}}步</view>

运行代码,如图1,代码运行成功。
  在这里插入图片描述

千万不要忘记将云函数的环境变量替换成你自己的。
  好了,整个代码完成,因为云函数(上传后)已运行于腾讯的云端,因此可在真机上也能运行。over
  源码地址:https://download.csdn.net/download/wstcl/89250128

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值