公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成。一次拉取调用最多拉取10000个关注者的OpenID,可以通过多次拉取的方式来满足需求。
接口调用请求说明
http请求方式: GET(请使用https协议) https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID
next_openid 第一个拉取的OPENID,不填默认从头开始拉取
返回说明
正确时返回JSON数据包:
{"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"}
参数说明:
total 关注该公众账号的总用户数
count 拉取的OPENID个数,最大值为10000
data 列表数据,OPENID的列表
next_openid 拉取列表的最后一个用户的OPENID
错误时返回JSON数据包(示例为无效AppID错误):
{"errcode":40013,"errmsg":"invalid appid"}
附:关注者数量超过10000时
当公众号关注者数量超过10000时,可通过填写next_openid的值,从而多次拉取列表的方式来满足需求。
具体而言,就是在调用接口时,将上一次调用得到的返回中的next_openid值,作为下一次调用中的next_openid值。
java代码示例
1,获取access_token
//1,获取acess_token String appid="";//应用ID String appSecret="";//(应用密钥) String url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appSecret+""; String backData=TestAcessToken.sendGet(url, "utf-8", 10000); System.out.println("返回:"+backData); JSONObject jsonObject = JSONObject.fromObject(backData); String access_token=jsonObject .getString("access_token");
appid和appSecret替换为自己公众号申请的即可。
sendGet方法
/***V型知识库 www.vxzsk.com * 模拟get请求 * @param url * @param charset * @param timeout * @return */ public static String sendGet(String url, String charset, int timeout) { String result = ""; try { URL u = new URL(url); try { URLConnection conn = u.openConnection(); conn.connect(); conn.setConnectTimeout(timeout); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset)); String line=""; while ((line = in.readLine()) != null) { result = result + line; } in.close(); } catch (IOException e) { return result; } } catch (MalformedURLException e) { return result; } return result; }
2,获取关注用户列表,在这里参数next_openid设置为空。
//2,获取关注用户 V型知识库 www.vxzsk.com String getUrl="https://api.weixin.qq.com/cgi-bin/user/get?access_token="+access_token+"&next_openid="; String jsonData=TestAcessToken.sendGet(getUrl, "utf-8", 10000); System.out.println(jsonData);
access_token和sendGet方法代码都已在第一步晒出。
3,完整代码如下
package com.test.weixin; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import net.sf.json.JSONObject; /**** * * @author V型知识库 www.vxzsk.com * */ public class TestUser { /*** * 模拟get请求 * @param url * @param charset * @param timeout * @return */ public static String sendGet(String url, String charset, int timeout) { String result = ""; try { URL u = new URL(url); try { URLConnection conn = u.openConnection(); conn.connect(); conn.setConnectTimeout(timeout); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), charset)); String line=""; while ((line = in.readLine()) != null) { result = result + line; } in.close(); } catch (IOException e) { return result; } } catch (MalformedURLException e) { return result; } return result; } public static void main(String[] args) { //1,获取acess_token String appid="";//应用ID String appSecret="";//(应用密钥) String url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+appSecret+""; String backData=TestUser.sendGet(url, "utf-8", 10000); System.out.println("返回:"+backData); JSONObject jsonObject = JSONObject.fromObject(backData); String access_token=jsonObject .getString("access_token"); //2,获取关注用户 String getUrl="https://api.weixin.qq.com/cgi-bin/user/get?access_token="+access_token+"&next_openid="; String jsonData=TestUser.sendGet(getUrl, "utf-8", 10000); System.out.println(jsonData); } }
把上述代码复制工程里面 在main方法里设置好自己的appid和appserect 直接运行即可,在这里还需要依赖json.jar包,请读者自行下载。
4,效果如下
感觉本站内容不错,读后有收获?小额赞助,鼓励网站分享出更好的教程