当前位置:网站首页>微信小程序获取微信用户步数
微信小程序获取微信用户步数
2022-08-09 22:33:00 【爱码~】
- 小程序开发代码
-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'), // 如需尝试获取用户信息可改为false
step: '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;
}
/*获取微信用户运动数据getWeRunData http://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();
}
}
边栏推荐
猜你喜欢
《GB5084-2021》PDF下载
“我“是一名测试/开发程序员,小孙的内心独白......
Technology feast!Huayun Data brings six topics to OpenInfra Days China
探索TiDB Lightning源码来解决发现的bug
高数_复习_第4章:向量代数和空间解析几何
32 JZOF 】 【 print down on binary tree
iNFTnews | 迪士尼如何布局Web3
complete knapsack theory
用哈希简单封装unordered_map和unordered_set
多商户商城系统功能拆解24讲-平台端分销会员
随机推荐
打包报错 AAPT: error: failed to read PNG signature: file does not start with PNG signature.
集群的基础形式
软考 --- 软件工程(7)软件项目管理(下)
32 JZOF 】 【 print down on binary tree
Gartner全球集成系统市场数据追踪,超融合市场增速第一
What are the basic steps to develop a quantitative trading strategy?
【面试高频题】可逐步优化的链表高频题
了解什么是架构基本概念和架构本质
leetcode 20. Valid Parentheses 有效的括号(中等)
H5实现分享功能
【对象——对象及原型链上的属性——对象的操作方法】
tiup cluster template
Redis集群
金仓数据库 KingbaseGIS 使用手册(6.2. 管理函数)
金仓数据库 KingbaseGIS 使用手册(6.6. 几何对象校验函数、6.7. 空间参考系函数)
Leetcode 236. 二叉树的最近公共祖先
【哲理】事教人
用函数统计最长单词的字母数量
SRv6 performance measurement
Gartner's global integrated system market data tracking, hyperconverged market growth rate is the first