微信关注用户的详细信息均保存在腾讯的微信服务器内。因此,若想获得公众号的关注用户的详细信息,必须通过相应的接口进行调用。而接口规定一次拉取只能拉取一万条openid,当用户较多时我们需要循环调用接口进行拉取操作。

首先我们需要获得accesstoken,这是微信接口调用凭证。

        // 获取微信access_tokenString accessToken = WxBase.getToken();// 跨域请求需在服务器端设置响应头response.setHeader("Access-Control-Allow-origin", "*");JSONArray user_info_list = new JSONArray();// 拉取完全部用户之后存储,也是本方法的最终返回对象。JSONArray current_info_list = new JSONArray();// 每次获取之后存储的单元JSONArray openidList = new JSONArray();// 作为批量获取用户信息方法batchGetUserInfo的参数String nextOpenId = "";int counter = 0;int total = 0;int count = 0;do {// 利用do-while循环可以解决粉丝数超过一万或者不足一万的情况,避免代码冗余。// 取openid列表JSONObject userJsonObject = WxUser.getUserList(accessToken, nextOpenId);// total为全部用户,count为本次拉取的用户条数total = userJsonObject.getIntValue("total");// 比如是20000count = userJsonObject.getIntValue("count");// 10000counter += count;// 10000nextOpenId = userJsonObject.getString("next_openid");JSONObject dataJsonObject = JSONObject.parseObject(userJsonObject.getString("data"));JSONArray openidArray = JSON.parseArray(dataJsonObject.getString("openid"));Iterator<Object> iterator = openidArray.iterator();while (iterator.hasNext()) {String openid = (String) iterator.next();JSONObject jo = new JSONObject();jo.put("openid", openid);jo.put("lang", "zh-CN");// TODO:暂时先默认是简体中文,后续可能会做判断openidList.add(jo);}current_info_list = WxUser.batchGetUserInfo(openidList, accessToken);user_info_list.addAll(current_info_list);// 全部放入另一个jsonarray中。} while (total != counter);// 当累加器没有达到最大值则继续循环,如果累加器已经达到最大粉丝数,则停止获取用户信息。log.info(user_info_list);

要获得详细的用户信息,还需要先行调用获取关注用户的openid列表,因为获得用户详细信息的接口需要我们传入这个列表,因此是两次接口调用,如果还是不太明白,就去微信公众开发手册中查看:微信公众平台

另外还有微信硬件接口开发的连接地址:http://iot.weixin.qq.com/wiki/new/index.html?page=3-4-1

在获取到的关注用户详细信息中,用户的关注时间是一串数字,这时我们就需要进行重新格式化一下,同样需要用到循环语句:

        // 将取出的用户列表中的subscribe_time循环格式化Iterator<Object> iterator = user_info_list.iterator();JSONArray userList = new JSONArray();// 处理subscribeTime时需要用到的变量JSONObject userJo = new JSONObject();Long time = 0L;DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String subscribeTime = "";while (iterator.hasNext()) {// 取出每个用户并转换为JsonObject便于操作userJo = (JSONObject) iterator.next();// 取出用户关注时间转化为Long型time = Long.parseLong(userJo.getString("subscribe_time"));// 格式化subscribeTime = df.format(new Date(time * 1000L));// 放回用户对象中userJo.put("subscribe_time", subscribeTime);// 放回current_info_list中。userList.add(userJo);}return userList;

至此,我们通过后台Java语句获得了存储于微信服务器上的关注者基本信息。

接下来是前端的显示工作。

由于如今h5的流行,以及spring boot的使用,可以将项目压缩为一个jar包直接放到服务器上运行,而jsp在打包的过程中会非常麻烦,因此我们只能使用jQuery将数据通过动态创建<tr>标签的方式进行展示:

jQuery(document).ready(function() {var url = "http://localhost:8080//wxgz/wxuser/alluser";$.post(url,function(data, status) {var thArr = $(".tr-thead").children();for (var i = 0; i < data.length; i++) {//这里是动态添加tr的过程。if (i > 0) {var tr = $("tbody").append("<tr class='gradeC'></tr>");for (var j = 0; j < thArr.length; j++) {var field = $(".tr-thead").children("th:eq(" + j + ")").text();tr.append("<td>" + eval("data[i]." + field) + "</td>");}} else {for (var j = 0; j < thArr.length; j++) {//循环取出th值,指定需要从data[i]中需要取哪个属性。var field = $(".tr-thead").children("th:eq(" + j + ")").text();$(".gradeX").children("td:eq(" + j + ")").text(eval("data[i]." + field)); //这条语句会把之前的显示覆盖掉。}}}});
});

以上jQuery代码虽然看似不多,但是却让我这个对前端知识不甚了解的人花了好久,而且中间也出现过一次关键问题上的错误,即后台传过来的结果的确是个数组,这个数组中的每个元素包含一个关注者的基本信息,每个基本信息是通过键值对的json形式进行编排的,关注者与关注者之间是数组元素的关系,但是每个关注者中的基本信息并非是数组关系,我们并不能通过循环取出,而只能通过key进行读取。而<th>中我们已经写死了表头,因此这里我并没有按照后台返回值的自然顺序进行排序,而是对<th>标签中的值进行顺序取,再通过这个获得的值在后台返回值中进行关注者信息的取出。

此处应当留意eval(“xxxx”)的使用。

微信公众号关注用户的信息拉取相关推荐

  1. 微信H5授权用户和公众号关注用户区别

    微信H5授权用户和公众号关注用户区别 概念H5页面访问用户是通过微信jscode获取token授权普通访问用户 公众号关注用户是关注了微信的公众号后的用户 概念上一个是普通访问用户(包括了但不限于关注 ...

  2. php如何判断是否关注,微信公众号判断用户是否已关注php代码解析

    搜索热词 <:微信公众号判断用户是否已关注PHP代码解析>要点: 本文介绍了:微信公众号判断用户是否已关注PHP代码解析,希望对您有用.如果有疑问,可以联系我们. 用户关注公众号,才能参与 ...

  3. 微信公众号关注回复多条信息(文字、图片、视频、跳转小程序)

    微信公众号关注回复多条信息(文字.图片.视频.跳转小程序) 对于没做过关注回复多条信息的开发来说,没有实现的思路,花费了一天的时间研究写代码.测试,现做个记录 思路 公众号后台配置关注自动回复只能配置 ...

  4. Thinkphp5下微信公众号获取用户信息

    前言 一直在用整理下tp5 开发微信公众号获取用户信息的简单笔记 废话不多说 直接贴代码如下: 正文 准备工作 在微信公众平台的开发者工具中申请公众平台测试账号如下图 在网页账号中 修改网页授权获取基 ...

  5. 微信公众号获取用户位置定位信息入库asp代码

    微信公众号获取用户位置定位信息入库asp代码,可以获取微信用户的坐标和地址信息入库,代码简洁: <% if request("action")="" th ...

  6. php微信公众号向指定客服发信息,微信公众号给用户发送一条消息 客服消息

    可以用客服消息接口或模板消息接口实现.但是需要认证公众号才能有权限. 认证服务号可以发送客服接口消息[需要对应openid24小时内有互动]和模板消息,订阅号则没有模板消息权限. 下面是发送客服消息的 ...

  7. 集社预付费系统微信公众号介绍(用户入口)

    集社预付费系统微信公众号介绍(用户入口) 一.前言 近年来,APP应用异常火爆,受到很多人的追捧,许多APP应用火成网红.但是,下载一款APP不仅要考虑与手机的兼容性,还要考虑手机内存.安装过多APP ...

  8. nodejs 监控微信公众号关注事件推送

    1.首先要在微信公众号后台填写服务器信息. 具体可看微信的文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp142113531 ...

  9. 公众号 关注_微信公众号关注图文跳转网页如何操作实现?

    对于微信公众号关注图文跳转网页的场景实现,微号帮平台提供了粉丝关注定时推送功能实现,公众平台提供了开发接口编程实现功能效果,都能实现微信公众号关注图文跳转网页,只要网页能正常在个人微信上打开浏览都能设 ...

最新文章

  1. 根据应用程序池名称获得第一个站点的物理路径
  2. 搜狗浏览器智慧版_奥维互动地图浏览器下载_奥维互动地图浏览器64位版v7.1.2
  3. 【Java】自编时间相关常用函数
  4. hadoop的Avro数据序列化系统
  5. futuretask java 并发请求_Java并发机制(9)--Callable、Future、FutureTask的使用
  6. UIView转换为UIImage
  7. codeforces 733D
  8. StyleCop学习笔记——初识StyleCop
  9. 用计算机弹奏体面6,抖音用计算器弹奏音乐曲谱大全 极乐净土、体面和成都等歌曲...
  10. 计算机安全模式无法启动,电脑安全模式启动不了怎么办
  11. fc模拟器安卓版_【SFC】魂斗罗3-异形战争模拟器情怀通关2020_EVOS
  12. 中国移动发布物联网操作系统 OneOS
  13. mac os 录屏快捷键_录屏软件哪个好?赶紧收藏录屏好用方法
  14. 【Unity】Obi插件系列(八)—— Obi Softbody
  15. GitHub快速学习-三
  16. S.H.E单飞不解散 Hebe率先开跑筹备个人专辑
  17. 【转】史上最全Android 开发和安全系列工具
  18. (转)归纳:数据库设计的六个阶段详解(有这一篇就够了)
  19. 修改element弹出框title样式
  20. pyplot颜色大全

热门文章

  1. 循环语句与条件语句_在PHP中混合条件语句和循环
  2. 保姆级教程,终于搞懂脏读、幻读和不可重复读了!
  3. 宽字符编码和解码通用类[CodeWidthChartUtility]
  4. python爬虫 asyncio aiohttp aiofiles 单线程多任务异步协程爬取图片
  5. MFC操作Excel2003的CRange类的Copy函数和Delete函数实现方法
  6. ztree 指定节点清空_节点操作
  7. 关于map对key自定义排序
  8. linux下生成coredump文件
  9. graphic头文件函数_graphics.h头文件
  10. java 字符串实例_Java字符串实例