uni-app利用uniCloud获取微信步数并将数据写入数据库

本项目依赖了uni-id

只是毕业设计,想法不完善,没有对用户授权失败做处理,如果编写的时候需要注意

第一步:调用wx.login()接口

拿到登录态的code ,传送给云端,获取uid,便于之后写入数据库

第二步:云端

调用uniID.loginByWeixin()接口,获取到用户的信息

第三步:客户端

拿到Uid,token,token的过期时间,并持久化保存

第四步:客户端

调用wx.getWeRunData(),拿到加密数据

第五步:云端(使用的Node.js)

  1. 从此处 下载示例代码,将其放至云端
  2. 在入口函数引入
  3. 编写代码

第六步:入库

如果能够查询到doc_id,则覆写,如果查询不到,则新增。

完整代码

样式,获取用户信息的按钮

<view class="container"><button type="default" open-type="getUserInfo" @getuserinfo="userinfo">登录</button></view>

客户端

uni.login({//step 1provider: "weixin",success: (res) => {const code = res.code;// 换取登录态信息uniCloud.callFunction({name: "login_wx",data: {code,typea: "werun",},success: (result) => {console.log(result);//step 3const uid = result.result.uid;const sessionKey = result.result.sessionKey;uni.setStorageSync("uni_id_token", result.result.token);uni.setStorageSync("uni_id_token_expired",result.result.tokenExpired);//step 4wx.getWeRunData({success: (werunData) => {werunData.sessionKey = sessionKey;werunData.user_id = uid;console.log(werunData);uniCloud.callFunction({name: "decrypt_werun_data",data: {werunData,},success(db_write_result) {debugger;console.log("=================读写数据库======");console.log(db_write_result);console.log("=================读写数据库完======");},});},});},});},
});

云端

// step 5.2
const WXBizDataCrypt = require("./WXBizDataCrypt.js");
const db = uniCloud.database();exports.main = async (event, context) => {//event为客户端上传的参数// return eventconst appID = "your appID";// step 4const {sessionKey,encryptedData,iv} = event.werunData;const pc = new WXBizDataCrypt(appID, sessionKey);const data = pc.decryptData(encryptedData, iv);// return data;// return event.werunData.user_id;/*** @description step 6*/const collection = db.collection('werun');// 利用Uid查询文档idlet search_docid_result = await collection.field({"_id": true}).where({"user_id": event.werunData.user_id}).get();// 数据库中没有该记录,添加if (search_docid_result.data.length === 0) {let add_data_result = await collection.add({last_modified_time: data.watermark.timestamp,sports_details: data.stepInfoList,user_id: event.werunData.user_id});add_data_result.type = "add";// 出口1return add_data_result;}// 数据库有该记录,覆写search_docid_result = search_docid_result.data[0]._id;// return search_docid_result;let update_data_result = await collection.doc(search_docid_result).set({last_modified_time: data.watermark.timestamp,sports_details: data.stepInfoList,user_id: event.werunData.user_id});update_data_result.type = "rewrite";// 返回数据给客户端// 出口2return update_data_result;
};

uni-app利用uniCloud获取微信步数并将数据写入数据库相关推荐

  1. 利用python获取微信企业号打卡数据,并生成windows计划任务

    利用python获取微信企业号打卡数据,并生成windows计划任务 安装python 安装第三方库 写主程序 设置Windows计划任务 由于公司的系统用的是Java版本,开通了企业号打卡之后又没有 ...

  2. 使用cryptojs解密encryptedData,获取微信步数

    使用cryptojs解密encryptedData,获取微信步数 这个方法在新的微信开发者工具不能用了,因为为了安全,不能把appsecrect写在前端代码里面.后面使用了云函数获取微信步数,很方便. ...

  3. 开发笔记 | JAVA获取微信步数+日周月排行榜的实现

    目录 功能描述 微信步数同步 获取我当日的步数 日排行,周排行,月排行榜的实现 功能描述 实现微信步数的同步(也就是获取当前的微信步数更新至数据库) 实现获取我当日的微信步数的查询 实现按照日排行,周 ...

  4. python 打卡程序_python获取微信企业号打卡数据并生成windows计划任务

    由于公司的系统用的是Java版本,开通了企业号打卡之后又没有预算让供应商做数据对接,所以只能自己捣鼓这个,以下是个人设置的一些内容,仅供大家参考 安装python python的安装,这里就不详细写了 ...

  5. 根据现有的API接口将获取JSON数据写入数据库

    根据现有的API接口将获取JSON数据写入数据库 利用API将获取数据存入数据库 获取API的URl 的原则 例如网址API的网址为:https://wuliang.art/ncov/doc.html ...

  6. uniapp+egg.js获取微信步数(wx.getWeRunData)

    uniapp 调用uni.login()获取code 调用wx.getWeRunData()获取encryptedData.iv 请求后端接口,传递code.encryptedData.iv参数 cr ...

  7. 微信步数C语言程序,获取微信步数 - osc_1v2pb1nt的个人空间 - OSCHINA - 中文开源技术交流社区...

    const util = require('../../utils/util.js') Page({ /** * 页面的初始数据 */ data: { runData:[], }, /** * 生命周 ...

  8. uni app input添加获取验证码按钮_uni-app跨平台框架对微信小程序的无障碍支持探索...

    uni-app是一个使用Vue.js开发所有前端应用的框架,开发者编写一套代码,可发布到iOS.Android.H5.以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝).快应用等多个平台. ...

  9. 利用NotificationListenerService获取微信通知消息的头像和内容

    强调下:利用Android原生功能获取第三方APP通知消息是流氓且不道德的(可能沾上官司),本文只讲原理 强调下:利用Android原生功能获取第三方APP通知消息是流氓且不道德的(可能沾上官司),本 ...

最新文章

  1. 将本地win10作为web服务器
  2. Java基础学习-Collection体系结构和迭代测试
  3. 基于动态IP的Internet视频监控解决方案(作者:吴晓晖)
  4. 双十一期间快递员凌晨送件 将下班程序员误认成小偷
  5. Windows 桌面主题,桌面背景
  6. 一个前端html模板处理引擎(javascript) - pure
  7. 【数据获取】建筑轮廓数据的N种获取方法
  8. VMware - 虚拟机系统中无法使用键盘
  9. 手机游戏修改客户端服务器,服务器 客户端手机游戏
  10. get与navigate方法
  11. Docker修改无法启动的容器的配置文件
  12. 微信支付应用签名修改后多久可以生效?
  13. writeline是什么意思_c语言console.WriteLine什么意思?
  14. UVA-12627 Erratic Expansion
  15. centos php mcrypt,CentOS下安装Php mcrypt扩展方法
  16. 模板类h和cpp分开写问题浅析
  17. 新手必看CSDN积分获取方法
  18. 牛客网练习赛34-b题
  19. 一些前端模拟接口工具和相关文章
  20. dll安装到GAC以及引用的方法【转】

热门文章

  1. FlappyBird游戏介绍
  2. 自适应模糊PID在反应釜温度控制中的应用
  3. access筛选末位数字为1或5_数字鸿沟理论不会用?北大必考常考,我们以快手短视频为例...
  4. 计算机本科毕业论文要求,计算机科学与技术学院本科毕业设计(论文)规范(试行)...
  5. Life Restart 人生模拟器 网址
  6. Kaggle天池比赛经验
  7. 阿里java技术专家是p几
  8. 华为ICT学院2.0计划发布,未来5年培养全球200万ICT人才
  9. 考研词汇测试软件,考研有哪些好用的背单词APP神器
  10. CentOS7 CPU降频