一、接口说明

公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成。一次拉取调用最多拉取10000个关注者的OpenID,可以通过多次拉取的方式来满足需求。

二、接口调用
1 接口调用请求说明

(1)http请求方式: GET(请使用https协议)
https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID

(2)请求参数
参数     是否必须     说明
access_token     是     调用接口凭证
next_openid     是     第一个拉取的OPENID,不填默认从头开始拉取
2 接口调用返回说明

(1)正确时返回JSON数据包
{"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"}
(2)返回参数
参数     说明
total     关注该公众账号的总用户数
count     拉取的OPENID个数,最大值为10000
data     列表数据,OPENID的列表
next_openid     拉取列表的最后一个用户的OPENID

附:关注者数量超过10000时
当公众号关注者数量超过10000时,可通过填写next_openid的值,从而多次拉取列表的方式来满足需求。
具体而言,就是在调用接口时,将上一次调用得到的返回中的next_openid值,作为下一次调用中的next_openid值。

示例如下:
公众账号A拥有23000个关注的人,想通过拉取关注接口获取所有关注的人,那么分别请求url如下:https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN 返回结果:

{"total":23000,"count":10000,"data":{"openid":["OPENID1","OPENID2",...,"OPENID10000"]},"next_openid":"OPENID10000"
}https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID1返回结果:
{"total":23000,"count":10000,"data":{"openid":["OPENID10001","OPENID10002",...,"OPENID20000"]},"next_openid":"OPENID20000"
}https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID2返回结果(关注者列表已返回完时,返回next_openid为空):
{"total":23000,"count":3000,"data":{""openid":["OPENID20001","OPENID20002",...,"OPENID23000"]},"next_openid":"OPENID23000"
}

三、java接口开发

注:此接口开发使用spring的RestTemplate方法进行http请求,如果不使用此方法可以使用其他http请求工具或方法进行http的请求。此方法仅供参考!
1 返回参数对象WeixinUserList

/*** 类描述:微信公众平台用户openId列表信息* 开发人员:wangqiulin* 开发时间:2017-9-5*/
public class WeixinUserList {private Integer total;//关注该公众账号的总用户数private Integer count;//拉取的OPENID个数,最大值为10000private WxOpenidInfo data;//列表数据,OPENID的列表private String next_openid;//拉取列表的最后一个用户的OPENIDprivate int errcode;//错误编码private String errmsg="ok";//错误提示public Integer getTotal() {return total;}public void setTotal(Integer total) {this.total = total;}public Integer getCount() {return count;}public void setCount(Integer count) {this.count = count;}public String getNext_openid() {return next_openid;}public void setNext_openid(String next_openid) {this.next_openid = next_openid;}public WxOpenidInfo getData() {return data;}public void setData(WxOpenidInfo data) {this.data = data;}public int getErrcode() {return errcode;}public void setErrcode(int errcode) {this.errcode = errcode;}public String getErrmsg() {return errmsg;}public void setErrmsg(String errmsg) {this.errmsg = errmsg;}}openidList集合对象
import java.util.List;public class WxOpenidInfo {private List<string> openid;public List<string> getOpenid() {return openid;}public void setOpenid(List<string> openid) {this.openid = openid;}
}

2 接口方法

将获取到的openid集合写入txt文件,写入数据库也类似

public WeixinUserList getUserOpenIdList(String nextOpenid, String accessToken) {//用户openid列表信息WeixinUserList openIdListInfo = null;synchronized(this){try {//循环获取用户openid列表do{//微信公众号获取用户列表信息接口地址String requestUrl = null;if(StringUtils.isBlank(nextOpenid)){requestUrl = new StringBuffer().append("https://api.weixin.qq.com/cgi-bin/user/get?access_token=").append(accessToken).toString();}else {requestUrl = new StringBuffer().append("https://api.weixin.qq.com/cgi-bin/user/get?access_token=").append(accessToken).append("&next_openid=").append(nextOpenid).toString();}openIdListInfo = restTemplate.getForObject(requestUrl, WeixinUserList.class);if(openIdListInfo != null && openIdListInfo.getErrcode() == 0){//获取用户openid列表对象WxOpenidInfo wxOpenidInfo = openIdListInfo.getData();if(wxOpenidInfo != null){List<string> openids = wxOpenidInfo.getOpenid();if(openids != null && openids.size() > 0){//生成数据的表头StringBuffer text = new StringBuffer();for (String openid : openids) {//生成数据的内容text.append(openid+"\r\n");}//写入txt文件中
                                writeTxtFile(text.toString());}//拉取列表的最后一个用户的OPENIDnextOpenid = openIdListInfo.getNext_openid();}}else {openIdListInfo.setErrcode(40000);openIdListInfo.setErrmsg("获取关注用户列表失败");return openIdListInfo ;}}while (openIdListInfo.getCount() == 10000);} catch (Exception e) {LOG.error("获取用户列表失败",e);openIdListInfo .setErrcode(40000);openIdListInfo .setErrmsg("获取用户列表失败");return openIdListInfo ;}}return openIdListInfo;}

将获取的openid列表写入txt文件

   /*** 写文件*/public void writeTxtFile(String content) throws IOException{//指定文件路径和名称String path = "D:/openidList.txt";File filename = new File(path);if (!filename.exists()) {filename.createNewFile();LOG.info(filename + "已创建!");}//先读取原有文件内容,然后进行写入操作RandomAccessFile randomAccessFile = null;try {randomAccessFile = new RandomAccessFile(filename, "rw");// 文件长度,字节数     long fileLength = randomAccessFile.length();     // 将写文件指针移到文件尾。
         randomAccessFile.seek(fileLength);     randomAccessFile.writeBytes(content);} catch (IOException e1) {

e1.printStackTrace();
     } finally {
         if (randomAccessFile != null) {
             try {
                 randomAccessFile.close();
             } catch (IOException e2) {
                 e2.printStackTrace();
             }
         }
     }
 }

转载于:https://www.cnblogs.com/hnsongbiao/p/8882250.html

微信公众平台 获取用户列表相关推荐

  1. java微信获取用户列表_微信公众平台 获取用户列表

    一.接口说明 公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成.一次拉取调用最多拉取10000个关注者的Open ...

  2. 解决调用微信公众平台-获取草稿列表响应中文乱码问题

    一.问题背景 在对接微信公众平台过程中,需要调用"获取草稿列表"的接口,其官网地址如下:https://developers.weixin.qq.com/doc/offiaccou ...

  3. java微信公众号中文乱码,java微信公众平台获取用户信息中文乱码解决办法(第十五课)...

    开发者在开发微信公众平台的时候,往往需要获取关注公众号的基本用户信息,其中信息中含有中文,但是根据微信官方文档,调用接口返回的用户json字符串信息中含有中文乱码,我们先来看看接口调用地址. 参数描述 ...

  4. 微信公众平台获取用户地理位置之开发文档详解

    开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会弹框让用户确认是否允许公众号使用其地理位置.弹框只在关注后出现一次,用户以后可以在公众号详情页面进行操作. 获取用户地理位置 获取用户地 ...

  5. .net 实现微信公众平台的用户信息获取

    public string getSubUserFkId()         {             log.Info("开始去微信服务器获取关注用户信息!");//大家可以把 ...

  6. tp5微信公众号获取用户openid_tp5+微信公众号获取用户基本信息

    获取用户基本信息(UnionID机制) 获取用户基本信息(UnionID机制) 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯 ...

  7. 使用.net 操作 微信公众平台 —— 接收用户操作 —— 关注/取消关注 公众号

    目录 1. 使用.net 操作 微信公众平台 -- 接入 2. 使用.net 操作 微信公众平台 -- 生成微信菜单 3. 使用.net 操作 微信公众平台 -- 接收并回复用户消息 3.1 使用.n ...

  8. 使用.net 操作 微信公众平台 —— 接收用户操作 —— 接收用户发送的消息

    目录 1. 使用.net 操作 微信公众平台 -- 接入 2. 使用.net 操作 微信公众平台 -- 生成微信菜单 3. 使用.net 操作 微信公众平台 -- 接收并回复用户消息 3.1 使用.n ...

  9. 使用.net 操作 微信公众平台 —— 接收用户操作

    目录 1. 使用.net 操作 微信公众平台 -- 接入 2. 使用.net 操作 微信公众平台 -- 生成微信菜单 3. 使用.net 操作 微信公众平台 -- 接收并回复用户消息 3.1 使用.n ...

最新文章

  1. 未来的计算机老素描画,考试这么无聊?学生把手画成“平面”,老师:未来的“美术大师”...
  2. java中的注解(二)
  3. DB2存储过程——条件判断语句if then
  4. Select的OnChange()事件
  5. spring 读取配置文件的优先级
  6. 关于异步IO与同步IO的写操作区别
  7. vue+Element-ui实现分页效果
  8. 【模板】最大流之上下界可行流
  9. 如何安装并启动django
  10. 计算机基础与应用32页,《计算机基础与应用》2次作业及答案
  11. 深入理解socket中的recv函数和send函数
  12. php手册chm打开空白
  13. 数显之家快讯:【SHIO世硕心语】中国武侠背后的传奇家族-海宁查氏,如何兴盛600年?
  14. 华为员工工资曝光:入职12年月薪31万!手里的窝窝头突然就不香了.....
  15. 快递面单隐私保护教程
  16. java/php/net/python守望先锋网站设计
  17. Science:已“死亡”的细菌仍能感知来自环境的信息
  18. c语言open()介绍
  19. 虚拟试衣镜 疫情期间实体服装店的救世主还是理想丰满现实骨感的“拔草神器”?
  20. jre是否支持html5,html5的结构

热门文章

  1. MySQL check table/optimize table/analyze table/REPAIR TABLE
  2. [ios] iOS中arc的设置与使用
  3. Sharepoint中的Feature Stapling功能
  4. 【社招】vivo西安研发中心招聘影像类英才
  5. 加量不加价!极速人脸检测库libfacedetection升级v3版,新增五点检测
  6. 信号扫描_微观世界扫描电子显微镜(SEM)
  7. EDG夺冠,我用Python分析一波:粉丝都炸锅了
  8. C++语言程序设计第五版 - 郑莉-绪论(一)
  9. 转——深度学习之BN算法(Batch Normailization)
  10. Mapgis与Arcgis数据互转中出现的问题