• 小程序开发代码

-js

// index.js
// 获取应用实例
const app = getApp()Page({data: {motto: 'Hello World',userInfo: {},hasUserInfo: false,canIUse: wx.canIUse('button.open-type.getUserInfo'),canIUseGetUserProfile: false,canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName'), // 如需尝试获取用户信息可改为falsestep: '9999',timestamp:'2022-8-3'},
//定义按钮的事件bthtap(e){console.log("进入了");console.log(e.target.dataset.info);console.log(e);},inputenevt(e){console.log(e.detail.value);this.setData({msg: e.datail.value})},// 事件处理函数bindViewTap() {wx.navigateTo({url: '../logs/logs'})},onLoad() {if (wx.getUserProfile) {this.setData({canIUseGetUserProfile: true})}},getUserProfile(e) {// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗wx.getUserProfile({desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写success: (res) => {console.log(res)this.setData({userInfo: res.userInfo,hasUserInfo: true})}})},getUserInfo(e) {// 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息console.log(e)this.setData({userInfo: e.detail.userInfo,hasUserInfo: true})},getUserRun:function(res){var that = this;var steps = '';var timestamps = '';//获取用户登录状态wx.login({success:(res)=>{var logdata = res.code;console.log("进行登录...");console.log(res.code);if(res.code){wx.request({url: 'http://localhost:9023/weixin/getUserinfo',data: {codestr: res.code},success:(res)=>{console.log(res.data);var sessionkey = res.data;console.log("登录成功");//获取微信运动数据wx.getWeRunData({success:(res)=>{console.log("获取微信运动数据");//用户数据加密了// 拿 encryptedData 到开发者后台解密开放数据var teddate = res.encryptedData;var iv = res.iv;var cloudID = res.cloudID;console.log(teddate);//获取用户信息// 必须是在用户已经授权的情况下调用wx.showModal({title:'温馨提示',content:'亲 请授权获取微信步数',success:(res)=>{if(res.confirm){wx.getUserProfile({desc: '用来获取用户步数来颁发奖励',success(res){console.log("用户信息");var infos =  res.userInfo;var rawdata =  res.rawData;var signature =  res.signature;var encryptedadata =  res.encryptedData;var ivvv =  res.iv;var cloudids =  res.cloudID;console.log(infos);if(infos){wx.request({url: 'http://localhost:9023/weixin/getwerundata',data:{nickName:infos.nickName,avatarUrl:infos.avatarUrl,gender:infos.gender,skey:sessionkey,iv:iv,getwerundata:teddate},success: (res)=>{console.log("输出用户步数了");console.log(res);console.log("输出步数吧");var st = res.data.step;var ti = res.data.timestamp;steps = res.data.step;;timestamps = res.data.timestamp;console.log(steps);console.log(timestamps);console.log("输出内容呀"+steps+timestamps);that.setData({step: steps,timestamp:timestamps})}})}},fail(){console.log("获取用户信息失败")}})}else if(res.cancel){console.log('取消了');wx.showToast({title: '您拒绝了,无法通过步数获取积分'})}}})}})    }                })}else{console.log()}},})},alerts(){wx.showToast({title: '用户信息',}),wx.showModal({cancelColor: '是否进入',content: '好棒'})},test1: function(steps,timestamps){console.log("传过来的内容呀"+steps+timestamps);this.setData({})}
})

-bushu.wxml

<!--index.wxml-->
<view class="container"><view class="userinfo"><block wx:if="{{canIUseOpenData}}"><view class="userinfo-avatar" bindtap="bindViewTap"><open-data type="userAvatarUrl"></open-data></view><open-data type="userNickName"></open-data></block><block wx:elif="{{!hasUserInfo}}"><button wx:if="{{canIUseGetUserProfile}}" bindtap="getUserProfile"> 获取头像昵称 </button><button wx:elif="{{canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button><view wx:else> 请使用1.4.4及以上版本基础库 </view></block><block wx:else><image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image><text class="userinfo-nickname">{{userInfo.nickName}}</text></block></view><button type="primary" bindtap="getUserRun">获取运动步数</button><view >时间:{{timestamp}}</view><view >步数:{{step}}</view><button type="primary" bindtap="alerts">弹框</button></view>

– 后端代码


/** 获取微信运动接口* */
@Controller
@RequestMapping("/weixin")
@RestController
public class BuShuController {//获取微信用户信息用来登录@RequestMapping("/getUserinfo")public String getUserinfo(String codestr){System.out.println("传过来的值"+codestr);/**https://api.weixin.qq.com/sns/jscode2session?appid=APPID   &secret=SECRET  &js_code=JSCODE&grant_type=authorization_code返回信息 session_key*/String getsessionurl = "https://api.weixin.qq.com/sns/jscode2session?appid=*********&secret=***********&js_code="+codestr+"&grant_type=authorization_code";StringBuffer lines = null;String line = null;try {//创建接口地址对象URL url = new URL(getsessionurl);//根据url对象来生成一个打开连接http请求HttpURLConnection connection = (HttpURLConnection)url.openConnection();//设置请求方式connection.setRequestMethod("GET");BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));while(null != (line = br.readLine())){System.out.println(line);lines = new StringBuffer(line);}br.close();System.out.println("结果");System.out.println(lines);} catch (Exception e) {e.printStackTrace();}JSONObject jsonObject = JSONObject.parseObject(lines.toString());String session_key = jsonObject.getString("session_key");System.out.println("session_key="+session_key);return session_key;}/*获取微信用户运动数据getWeRunDatahttp://localhost:9023/weixin/getwerundata* */@RequestMapping("/getwerundata")public String getWeRunData(String nickName,String avatarUrl,String gender,String skey,String iv,String getwerundata){System.out.println("进入获取用户信息了");System.out.println("nickName"+nickName);System.out.println("skey"+skey);System.out.println("iv"+iv);System.out.println("getwerundata"+getwerundata);System.out.println("输入完毕!");String userInfo = WXDecryptUtil.getUserInfo(getwerundata,skey,iv);System.out.println(userInfo);JSONObject jsonObject = JSONObject.parseObject(userInfo);String stepInfoList = jsonObject.getString("stepInfoList");System.out.println(stepInfoList);JSONArray objects = JSONArray.parseArray(stepInfoList);System.out.println(objects.size());String step = JSONObject.parseObject(objects.get(objects.size()-1).toString()).getString("step");String timestamp = JSONObject.parseObject(objects.get(objects.size()-1).toString()).getString("timestamp");SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String format = sdf.format(new Date(Long.valueOf(timestamp + "000")));System.out.println(step);System.out.println(format);JSONObject jsonObject1 = new JSONObject();jsonObject1.put("step",step);jsonObject1.put("timestamp",format);return jsonObject1.toString();}
}

依赖

   <!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib --><!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.15</version></dependency><dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15on</artifactId><version>1.59</version>

– 优化一下

// index.js
// 获取应用实例
const app = getApp()Page({data: {motto: 'Hello World',userInfo: {},// hasUserInfo: false,// canIUse: wx.canIUse('button.open-type.getUserInfo'),canIUseGetUserProfile: true,// canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName'), // 如需尝试获取用户信息可改为falsestep: '9999',timestamp:'2022-8-3'},
//定义按钮的事件bthtap(e){console.log("进入了");console.log(e.target.dataset.info);console.log(e);},inputenevt(e){console.log(e.detail.value);this.setData({msg: e.datail.value})},// 事件处理函数bindViewTap() {wx.navigateTo({url: '../logs/logs'})},onLoad() {if (wx.getUserProfile) {this.setData({canIUseGetUserProfile: true})}},getUserProfile(e) {// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认,开发者妥善保管用户快速填写的头像昵称,避免重复弹窗wx.getUserProfile({desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写success: (res) => {console.log(res)this.setData({userInfo: res.userInfo,hasUserInfo: true})}})},// getUserInfo(e) {//   // 不推荐使用getUserInfo获取用户信息,预计自2021年4月13日起,getUserInfo将不再弹出弹窗,并直接返回匿名的用户个人信息//   console.log("haha");//   alert("dada");//   this.setData({//     userInfo: e.detail.userInfo,//     hasUserInfo: true//   })// },// haha(){//   console.log("dddd");// },getUserRun:function(res){console.log("传过来的内容呀");var that = this;var steps = '';var timestamps = '';//获取用户登录状态console.log("传过来的内容呀dddd"),wx.login({success:(res)=>{var logdata = res.code;console.log("进行登录...");console.log(res.code);if(res.code){wx.request({//url: 'http://localhost:9023/weixin/getUserinfo',// url: 'http://weixin-dev3.klb.com.cn/klbwx/applets/getUserinfo.htm',url:'https://api.weixin.qq.com/sns/jscode2session?appid=wx66314a80dc7d2c46&secret=25d72907e21322a78bf64e01ccb5f445&grant_type=authorization_code&js_code='+res.code,// data: {//   appid:'wx66314a80dc7d2c46',//   secret:'25d72907e21322a78bf64e01ccb5f445',//   grant_type:'authorization_code',//   codestr: res.code//   },success:(res)=>{console.log("返回的信息");console.log(res.data);console.log("登录成功");var sessionkey = res.data;console.log("sessionkey"+sessionkey);//获取微信运动数据wx.getWeRunData({success:(res)=>{console.log("获取微信运动数据");//用户数据加密了// 拿 encryptedData 到开发者后台解密开放数据var teddate = res.encryptedData;var iv = res.iv;var cloudID = res.cloudID;console.log(teddate);//获取用户信息// 必须是在用户已经授权的情况下调用wx.showModal({title:'温馨提示',content:'亲 请授权获取微信步数',success:(res)=>{if(res.confirm){wx.getUserProfile({desc: '用来获取用户步数来颁发奖励',success(res){console.log("用户信息");var infos =  res.userInfo;var rawdata =  res.rawData;var signature =  res.signature;var encryptedadata =  res.encryptedData;var ivvv =  res.iv;var cloudids =  res.cloudID;console.log(infos);if(infos){wx.request({url: 'http://weixin-dev3.klb.com.cn/klbwx/applets/getwerundata.htm',// url: 'http://localhost:9023/weixin/getwerundata',data:{nickName:infos.nickName,avatarUrl:infos.avatarUrl,gender:infos.gender,skey:sessionkey,iv:iv,getwerundata:teddate},success: (res)=>{console.log("输出用户步数了");console.log(res);console.log("输出步数吧");console.log(res.data);let jsonitem = JSON.parse(res.data);console.log(jsonitem.step);console.log(jsonitem.timestamp);var st = jsonitem.step;var ti = jsonitem.timestamp;steps = jsonitem.step;timestamps = jsonitem.timestamp;console.log(steps);console.log(timestamps);console.log("输出内容呀"+steps+timestamps);that.setData({step: steps,timestamp:timestamps})}})}},fail(){console.log("获取用户信息失败")}})}else if(res.cancel){console.log('取消了');wx.showToast({title: '您拒绝了'})}}})}})    }                })}else{console.log()}},})},alerts(){wx.showToast({title: '用户信息',}),wx.showModal({cancelColor: '是否进入',content: '好棒'})},test1: function(steps,timestamps){console.log("传过来的内容呀"+steps+timestamps);this.setData({})},haha(){console.log('dsfsdf');console.log('取消了');wx.showModal({cancelColor: '是否进入',content: '好棒!'})}
})

微信小程序获取微信用户步数相关推荐

  1. 微信小程序-获取微信收货地址

    微信小程序获取微信收货地址 文章目录 微信小程序获取微信收货地址 一.在小程序管理后台( 小程序管理后台),「开发」-「开发管理」-「接口设置」中自助开通该接口权限. 二.开通之后直接调用接口. // ...

  2. 微信小程序获取微信公众号文章2

    微信小程序获取微信公众号文章2 前面介绍了一篇微信小程序打开微信公众号中的文章实战教程,主要介绍了实现的具体原理,但是实际去做的时候,发现了更多的坑,所以这里再补充一下. 原先的思路是不完整的 原先我 ...

  3. 微信小程序获取微信运动数据并解密

    官方API 官方API 步骤 1,APP端拉起微信小程序 2,小程序端获取微信运动数据 3,后台解密获取的微信运动数据 实现 1,APP端调起微信小程序 准备工作: 1)微信开放平台,微信公众平台注册 ...

  4. 微信小程序获取微信头像、微信昵称

    微信小程序获取头像昵称 <template><view class="top-user"><view class="top-content& ...

  5. 从微信服务器获取用户信息,微信小程序Ⅴ [获取登陆用户信息,重点openID(详解)]...

    ♩ 背景 其实这篇文章几个月前就写完了,可是这段时间,微信小程序官方文档有了更新,同事在我本身的实际操做过程当中,发现以前写的过于繁杂,因此如今进行简化梳理,欢迎指摘. 语言框架:ThinkPHP3. ...

  6. 小程序步数解密php,微信小程序--获取微信运动步数的实例代码

    如今运动计步很火,不管是蚂蚁森林,仍是微信上都很火爆,本文介绍了微信小程序微信运动步数的实例代码,分享给你们php 思路:wx.login获取的code请求获取的session_key,wx.getW ...

  7. 微信小程序Ⅴ [获取登录用户信息,重点openID(详解)]

    ♩ 背景 其实这篇文章几个月前就写完了,但是这段时间,微信小程序官方文档有了更新,同事在我自己的实际操作过程中,发现之前写的过于繁杂,所以现在进行简化梳理,欢迎指摘. 语言框架:ThinkPHP3.2 ...

  8. php 小程序 运动步数_微信小程序获取微信运动步数的实例代码

    现在运动计步很火,无论是蚂蚁森林,还是微信上都很火爆,本文介绍了微信小程序微信运动步数的实例代码,分享给大家 微信小程序API-微信运动 https://mp.weixin.qq.com/debug/ ...

  9. 微信小程序获取微信名和头像登录

    小程序获取用户信息使用 wx.getUserProfile()方法 wx.getUserProfile()方法的用处:获取用户信息,页面上有点击事件button后才可以调用,每次请求都会弹出授权窗口, ...

最新文章

  1. 元素的   is_enable()、is_displayed()和is_selected()
  2. CDS – One Concept, Two Flavors
  3. java内部类选择题_java内部类详解(附相关面试题)
  4. <MySQL>何时使用普通索引,何时使用唯一索引
  5. ASP.net用法系列:如何从基类调用LINQ/EF类的属性
  6. @程序员,如何在五分钟内构建个人网盘服务?| 技术头条
  7. 在语雀中输入汉语拼音
  8. ICCV 2017:训练GAN的16个技巧,2400+星(PPT)
  9. Hexo博客标题栏背景颜色设置美化
  10. vue+环信客服前端对接
  11. 【转】类别catagory的用法
  12. codeforces19E Fairy
  13. 记一次企业邮官网SEO优化
  14. mvdbos php spider,yemtao
  15. 黄金连分数(python)
  16. 步进电机c语言驱动原理,《步进电机【驱动电路+C语言驱动程序】》.doc
  17. 在win10查看本机linux的文件,Windows 10变身开发者利器:内置Linux内核,轻松查看Linux子系统文件...
  18. 如何把程序员从久坐颈椎病中拯救出来?我为程序员做了这个救命APP
  19. Matlab GUI编程技巧(十五):scroll滚动到组件内的位置及ScrollBar动画演示
  20. MULTISIM 仿真 数据选择器构成无触点切换电路

热门文章

  1. 计算机电缆线对成缆系数,电线电缆的成缆系数是什么含义?
  2. 《勋伯格和声学》读书笔记(八):转调
  3. 光流(七)--Brox算法(DeepFlow)
  4. java编程试算平衡_发生额试算平衡要求本期每个账户借方发生额合计都与贷方发生额合计相等()_学小易找答案...
  5. 【深度好文】Python图像处理之物体标识与面积测量
  6. 锐捷NBR路由器命令执行漏洞复现
  7. Retina、非Retina、点、像素、iPhone分辨率
  8. 2021-07-25 .NET高级班 119-直播项目专题(头像上传)
  9. 你用过Elasticsearch Percolate 反向检索吗?
  10. HTML修改CSS样式或更新内容,网页自动刷新