当前位置:   article > 正文

微信小程序获取微信用户步数_微信步数api

微信步数api
  • 小程序开发代码

在这里插入图片描述

-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({
      
    })
  }
})

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185

-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>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

– 后端代码


/** 获取微信运动接口
 * */
@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();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85

依赖

   <!-- 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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

– 优化一下

// 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'), // 如需尝试获取用户信息可改为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("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
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/308225
推荐阅读
相关标签
  

闽ICP备14008679号