一、接口说明

公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串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 classWeixinUserList {private Integer total;//关注该公众账号的总用户数

private Integer count;//拉取的OPENID个数,最大值为10000

private WxOpenidInfo data;//列表数据,OPENID的列表

private String next_openid;//拉取列表的最后一个用户的OPENID

private int errcode;//错误编码

private String errmsg="ok";//错误提示

publicInteger getTotal() {returntotal;

}public voidsetTotal(Integer total) {this.total =total;

}publicInteger getCount() {returncount;

}public voidsetCount(Integer count) {this.count =count;

}publicString getNext_openid() {returnnext_openid;

}public voidsetNext_openid(String next_openid) {this.next_openid =next_openid;

}publicWxOpenidInfo getData() {returndata;

}public voidsetData(WxOpenidInfo data) {this.data =data;

}public intgetErrcode() {returnerrcode;

}public void setErrcode(interrcode) {this.errcode =errcode;

}publicString getErrmsg() {returnerrmsg;

}public voidsetErrmsg(String errmsg) {this.errmsg =errmsg;

}

}

openidList集合对象importjava.util.List;public classWxOpenidInfo {private Listopenid;public ListgetOpenid() {returnopenid;

}public void setOpenid(Listopenid) {this.openid =openid;

}

}

2 接口方法

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

publicWeixinUserList 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 openids =wxOpenidInfo.getOpenid();if(openids != null && openids.size() > 0){//生成数据的表头

StringBuffer text = newStringBuffer();for(String openid : openids) {//生成数据的内容

text.append(openid+"\r\n");

}//写入txt文件中

writeTxtFile(text.toString());

}//拉取列表的最后一个用户的OPENID

nextOpenid =openIdListInfo.getNext_openid();

}

}else{

openIdListInfo.setErrcode(40000);

openIdListInfo.setErrmsg("获取关注用户列表失败");returnopenIdListInfo ;

}

}while (openIdListInfo.getCount() == 10000);

}catch(Exception e) {

LOG.error("获取用户列表失败",e);

openIdListInfo .setErrcode(40000);

openIdListInfo .setErrmsg("获取用户列表失败");returnopenIdListInfo ;

}

}returnopenIdListInfo;

}

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

/**

* 写文件*/

public voidwriteTxtFile(String content) throws IOException{//指定文件路径和名称

String path = "D:/openidList.txt";

File filename= newFile(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();

}

}

}

}

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

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

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

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

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

  3. 视频教程-微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-微信开发

    微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统 微信企业号星级会员.10多年软件从业经历,国家级软件项目负责人,主要从事软件研发.软件企业员工技能培训.已经取得计算机技术与软件资格考试 ...

  4. php微信开放平台获取openid,微信公众平台获取openid

    微信公众平台可以通过接口获取用户的openid,但是获取用户信息的时候需要做一次跳转. 我在后台有一张用户表,用户如果关注了公众平台就将他的信息录入到数据库,包括openid.现在要做一个简单的系统, ...

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

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

  6. 微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-翟东平-专题视频课程...

    微信小程序系统教程Java版[3/3阶段]_微信小程序电商系统-2445人已学习 课程介绍         微信小程序系统教程[初级阶段],微信小程序0基础学起,讲解微信小程序开发的基础知识. 微信小 ...

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

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

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

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

  9. 微信公众平台—— 获取微信服务器IP地址

    微信公众平台-- 获取微信服务器IP地址 const ServerIpUrl = 'https://api.weixin.qq.com/cgi-bin/getcallbackip?&acces ...

  10. 微信链接修改图片_微信链接修改图标

    自定义链接是什么?微信链接修改图片_微信链接修改图标 自定义微信分享链接是指将一条网页链接通过微信接口生成一张卡片,并且该卡片的标题,内容和图片都可以自己编辑.如下图效果 ● 未自定义的网页链接 ● ...

最新文章

  1. idea部署springboot项目到外部tomcat
  2. 安卓逆向_19( 一 ) --- APK保护策略【APP打开就崩溃 之 霸哥apk过签名校验】
  3. jQuery零基础入门——(三)层级选择器
  4. python修改html的td_python3修改HTMLTestRunner,生成有截图的测试报告,并发送测试邮件(二)...
  5. 怎样看懂Oracle的执行计划
  6. 06.Python网络爬虫之requests模块(2)
  7. 提高网站速度|负载均衡
  8. 用计算机和电视机组成家庭影院,请问家庭影院的音响能接在电脑上用么?我的电脑没有配置音响能用家庭 爱问知识人...
  9. 聊聊消息中心的设计与实现逻辑
  10. 电子科技大学和东北大学计算机专业哪个好,2016东北大学VS电子科技大学 谁执牛耳?...
  11. 使用 Docker 安装 Zabbix,并配置自定义监控项
  12. UMAX软件服务平台——SoftTown软建堂
  13. 谷粒商城--分布式基础篇2
  14. Java实现 LeetCode 738 单调递增的数字(暴力)
  15. (小白)使用nslookup找不到服务器,错误:默认服务器:unknown Address: ::1解决方案
  16. Cisco九位顶尖网络专家揭密
  17. pytho基础——如何查看python版本及多个python版本
  18. JumpStart 5.2用例安装说明 tapestry5
  19. Feng_D的笔记杂,持续更新中......
  20. SIMATIC PID温度控制

热门文章

  1. 计蒜客T1113——整理药名
  2. 芯之联 XR872 快速入门
  3. 系统内集成支付宝接口在生产机需要开放的访问ip和端口
  4. 沙拉查词配置浏览器外翻译(为你的电脑配置一个随时翻译器吧!)
  5. ajax中的beforesend参数说明
  6. 【jquery ajax】实现文件上传提交
  7. Mendix基于Workflow实现员工入职流程应用场景
  8. 关于CLion把main菜单栏搞没了
  9. 华为手表开发:WATCH 3 Pro(2)生成密钥和证书请求文件,生成签名和配置签名
  10. 用 MySQL 实现一个分布式锁