uni-app利用uniCloud获取微信步数并将数据写入数据库
uni-app利用uniCloud获取微信步数并将数据写入数据库
本项目依赖了uni-id
只是毕业设计,想法不完善,没有对用户授权失败做处理,如果编写的时候需要注意
第一步:调用wx.login()接口
拿到登录态的code
,传送给云端,获取uid,便于之后写入数据库
第二步:云端
调用uniID.loginByWeixin()接口,获取到用户的信息
第三步:客户端
拿到Uid,token,token的过期时间,并持久化保存
第四步:客户端
调用wx.getWeRunData(),拿到加密数据
第五步:云端(使用的Node.js)
- 从此处 下载示例代码,将其放至云端
- 在入口函数引入
- 编写代码
第六步:入库
如果能够查询到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获取微信步数并将数据写入数据库相关推荐
- 利用python获取微信企业号打卡数据,并生成windows计划任务
利用python获取微信企业号打卡数据,并生成windows计划任务 安装python 安装第三方库 写主程序 设置Windows计划任务 由于公司的系统用的是Java版本,开通了企业号打卡之后又没有 ...
- 使用cryptojs解密encryptedData,获取微信步数
使用cryptojs解密encryptedData,获取微信步数 这个方法在新的微信开发者工具不能用了,因为为了安全,不能把appsecrect写在前端代码里面.后面使用了云函数获取微信步数,很方便. ...
- 开发笔记 | JAVA获取微信步数+日周月排行榜的实现
目录 功能描述 微信步数同步 获取我当日的步数 日排行,周排行,月排行榜的实现 功能描述 实现微信步数的同步(也就是获取当前的微信步数更新至数据库) 实现获取我当日的微信步数的查询 实现按照日排行,周 ...
- python 打卡程序_python获取微信企业号打卡数据并生成windows计划任务
由于公司的系统用的是Java版本,开通了企业号打卡之后又没有预算让供应商做数据对接,所以只能自己捣鼓这个,以下是个人设置的一些内容,仅供大家参考 安装python python的安装,这里就不详细写了 ...
- 根据现有的API接口将获取JSON数据写入数据库
根据现有的API接口将获取JSON数据写入数据库 利用API将获取数据存入数据库 获取API的URl 的原则 例如网址API的网址为:https://wuliang.art/ncov/doc.html ...
- uniapp+egg.js获取微信步数(wx.getWeRunData)
uniapp 调用uni.login()获取code 调用wx.getWeRunData()获取encryptedData.iv 请求后端接口,传递code.encryptedData.iv参数 cr ...
- 微信步数C语言程序,获取微信步数 - osc_1v2pb1nt的个人空间 - OSCHINA - 中文开源技术交流社区...
const util = require('../../utils/util.js') Page({ /** * 页面的初始数据 */ data: { runData:[], }, /** * 生命周 ...
- uni app input添加获取验证码按钮_uni-app跨平台框架对微信小程序的无障碍支持探索...
uni-app是一个使用Vue.js开发所有前端应用的框架,开发者编写一套代码,可发布到iOS.Android.H5.以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝).快应用等多个平台. ...
- 利用NotificationListenerService获取微信通知消息的头像和内容
强调下:利用Android原生功能获取第三方APP通知消息是流氓且不道德的(可能沾上官司),本文只讲原理 强调下:利用Android原生功能获取第三方APP通知消息是流氓且不道德的(可能沾上官司),本 ...
最新文章
- 将本地win10作为web服务器
- Java基础学习-Collection体系结构和迭代测试
- 基于动态IP的Internet视频监控解决方案(作者:吴晓晖)
- 双十一期间快递员凌晨送件 将下班程序员误认成小偷
- Windows 桌面主题,桌面背景
- 一个前端html模板处理引擎(javascript) - pure
- 【数据获取】建筑轮廓数据的N种获取方法
- VMware - 虚拟机系统中无法使用键盘
- 手机游戏修改客户端服务器,服务器 客户端手机游戏
- get与navigate方法
- Docker修改无法启动的容器的配置文件
- 微信支付应用签名修改后多久可以生效?
- writeline是什么意思_c语言console.WriteLine什么意思?
- UVA-12627 Erratic Expansion
- centos php mcrypt,CentOS下安装Php mcrypt扩展方法
- 模板类h和cpp分开写问题浅析
- 新手必看CSDN积分获取方法
- 牛客网练习赛34-b题
- 一些前端模拟接口工具和相关文章
- dll安装到GAC以及引用的方法【转】
热门文章
- FlappyBird游戏介绍
- 自适应模糊PID在反应釜温度控制中的应用
- access筛选末位数字为1或5_数字鸿沟理论不会用?北大必考常考,我们以快手短视频为例...
- 计算机本科毕业论文要求,计算机科学与技术学院本科毕业设计(论文)规范(试行)...
- Life Restart 人生模拟器 网址
- Kaggle天池比赛经验
- 阿里java技术专家是p几
- 华为ICT学院2.0计划发布,未来5年培养全球200万ICT人才
- 考研词汇测试软件,考研有哪些好用的背单词APP神器
- CentOS7 CPU降频