Java 微信公众号导出所有粉丝(openId)
由于公众号换了公司主体,需要做迁移,玩家的openId数据需要做处理。
(我是按我要的json格式,将粉丝导成了1万条数据的一个json文件)
文件格式:
{
"info":[
{"openId":"ogVous494ltuNmO4zHb1seHeGLSk"}
]
}
package exportFansFromPublic; import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.odao.weixin.api.support.AccessTokenKit;
import com.odao.weixin.api.support.HttpKit; /**
* 导出公众号粉丝
* @author wangfj
*/
public class ExportFansFromPublic {
@SuppressWarnings({ "unchecked", "static-access","rawtypes"})
public static void main(String[] args) throws Exception {
String token = AccessTokenKit.getTokenNew("appId", "app秘钥");
String accesstoken = (String) ((Map) JSON.parseObject(token, Map.class)).get("access_token");
Map<String,String> params = new HashMap<String,String>();
params.put("access_token", accesstoken);
String nextOpenId = "";
for(int i=1;i<=50;i++){ //我这了定的50,是根据公众号粉丝数量来的,一个文件一万条,你们自己算
if(!"".equals(nextOpenId)){
params.put("next_openid", nextOpenId);
}
//根据appId,appSecret获取数据粉丝openId(1次1万条)
//格式:{"data":{"openid":["oneOpenId,twoOpenId"]},"next_openid":"theNextOpenId"}
try{
String data = HttpKit.get("https://api.weixin.qq.com/cgi-bin/user/get",params);
JSONObject json = (JSONObject) JSONObject.parse(data);
String openId = json.get("data").toString(); JSONObject open = (JSONObject) JSONObject.parse(openId);
String openIds = open.get("openid").toString();
JSONArray arr= JSONObject.parseArray(openIds); List<String> list = arr.toJavaObject(arr, List.class); nextOpenId = writerJson(list,i);
}catch(Exception e){
System.out.println("导出完毕");
break;
}
}
} public static String writerJson(List<String> list,int fileName){
String nextOpenId = "";
FileWriter fw = null;
PrintWriter out = null;
try {
// 指定生成txt的文件路径
fw = new FileWriter("C:/Users/admin/Desktop/fan/"+fileName+".json");
out = new PrintWriter(fw);
out.println("{");
out.println("\t\"info\":[");
for(int i=0;i<list.size();i++){
if(i!=list.size()-1){
out.println("\t\t{\"openId\":\""+list.get(i)+"\"},");
}else{
nextOpenId = list.get(i);
out.println("\t\t{\"openId\":\""+list.get(i)+"\"}");
}
}
out.println("\t]");
out.println("}");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
out.close();
fw.close();
out.flush(); // 由于此处用到了缓冲流,如果数据量过大,不进行flush操作,某些数据将依旧 存在于内从中而不会写入文件,此问题一定要注意
} catch (Exception e) {
e.printStackTrace();
}
}
return nextOpenId;
}
}
Java 微信公众号导出所有粉丝(openId)的更多相关文章
- Java微信公众号安全模式消息解密
这篇文章主要为大家详细介绍了Java微信公众号安全模式消息解密,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.微信公众平台下载解密工具,导入项目中,根据demo解密消息 public stat ...
- Java微信公众号开发梳理
Java微信公众号开发梳理 现在微信公众平台的开发已经越来越普遍,这次开发需要用到微信公众平台.因此做一个简单的记录,也算是给那些没踩过坑的童鞋一些启示吧.我将分几块来简单的描述一下,之后会做详细的说 ...
- ASP.NET微信公众号用于给指定OpenId用户发送红包
ASP.NET微信公众号用于给指定OpenId用户发送红包 微信公众号要实现对指定用户发送红包,必须指定一个存放兵发放金额的商户号,在微信商户平台里面申请商户号并获取相关参数例如发送红包所要用到的安全 ...
- Java 微信公众号上传永久素材的方法
Java 微信公众号上传永久素材的方法 学习了:http://blog.csdn.net/u013791374/article/details/53258275 膜拜一下,源码如下: @Request ...
- JAVA微信公众号通过openid发送模板消息~
1,问题产生 在微信公众号开发过程中,我们有时候做不同权限的时候,比如在注册的时候,需要审核,然后我们要想办法让对方知道审核的结果.这时候我们可以通过模板消息来通知. 2,第一步,首先在微信公众号上获 ...
- JAVA微信公众号网页开发 —— 用户授权获取openid
官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842 HttpClientUtil.java packa ...
- JAVA微信公众号网页开发——获取公众号关注的所有用户(微信公众号粉丝)
package com.weixin.sendmessage; import org.apache.commons.lang.StringUtils; import org.apache.http.H ...
- Java 微信公众号迁移
背景:公众号换主体,要迁移,粉丝(openId)的业务数据要做处理. 第一步:参照我的另一篇文章,Java 导出微信公众号粉丝. 第二部:数据处理(master-worker模式) 程序主入口:Mai ...
- java微信公众号JSAPI支付以及所遇到的坑
上周做了个支付宝微信扫码支付,今天总结一下.微信相比支付宝要麻烦许多 由于涉及到代理商,没办法,让我写个详细的申请流程,懵逼啊. 笔记地址 http://note.youdao.com/notesha ...
随机推荐
- C# 电脑上提示未知发布者
参考6楼:http://tieba.baidu.com/p/5767451198?pid=120504172126&cid=120504203560#120504203560 解决方案:mak ...
- [NOIP2017] 宝藏 【树形DP】【状压DP】
题目分析: 这个做法不是最优的,想找最优解请关闭这篇博客. 首先容易想到用$f[i][S][j]$表示点$i$为根,考虑$S$这些点,$i$的深度为$j$情况的答案. 转移如下: $f[i][S][j ...
- 【XSY2767】朋友 广义后缀自动机 网络流
题目描述 懒得写了...直接贴题面 $\sum n\leq5000,1\leq S_{i,j}\leq k\leq 1000 $ 题解 先建出广义sam. 可以发现朋友的出现位置的定义符合后缀自动机的 ...
- bzoj 2429: [HAOI2006]聪明的猴子 (最小生成树)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2429 思路:就是找最小生成树最大的一条边,最小生成树的性质,最后加入的那条边就是最大的 实现 ...
- python3基础概念
数: str:使用单引号或双引号表达,不可变的,一旦创建不可更改,可以使变量赋予不同的字符串,但字符串本身是没有更改的: list:有序的集合,可变的基础数据类型: clear(),copy(),ap ...
- 【BZOJ2817】[ZJOI2012]波浪(动态规划)
[BZOJ2817][ZJOI2012]波浪(动态规划) 题面 BZOJ 洛谷 题解 首先这个差值最大也就是\(n^2\)级别的. 那么这样子就可以压进状态啦. 我们把这个操作看成一个个加数的操作,按 ...
- 【BZOJ5304】[HAOI2018]字串覆盖(后缀数组,主席树,倍增)
[BZOJ5304][HAOI2018]字串覆盖(后缀数组,主席树,倍增) 题面 BZOJ 洛谷 题解 贪心的想法是从左往右,能选就选.这个显然是正确的. 题目的数据范围很好的说明了要对于询问分开进行 ...
- 【转】IAR Embedded Workbench for ARM 8.22.1 基础使用教程
@2018-12-15 [小记] IAR Embedded Workbench for ARM 8.22.1 基础使用教程
- EtherType :以太网类型字段及值
Ethernet II即DIX 2.0:Xerox与DEC.Intel在1982年制定的以太网标准帧格式.Cisco名称为:ARPA Ethernet II类型以太网帧的最小长度为64字节(6+6+2 ...
- 新建WINDOWS服务C#
当前作业环境 Windows8.1 | Visual Studio 2013 一. 建立项目,选择"Windows服务"模板 二. 查看生成的项目,结构很像WinForm的项目,其 ...