zoukankan      html  css  js  c++  java
  • 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("	"info":[");
                for(int i=0;i<list.size();i++){
                    if(i!=list.size()-1){
                        out.println("		{"openId":""+list.get(i)+""},");
                    }else{
                        nextOpenId = list.get(i);
                        out.println("		{"openId":""+list.get(i)+""}");
                    }
                }
                out.println("	]");
                out.println("}");
            } catch (Exception e) {  
                e.printStackTrace();
            } finally {  
                try {  
                    out.close();  
                    fw.close();  
                    out.flush();  // 由于此处用到了缓冲流,如果数据量过大,不进行flush操作,某些数据将依旧  存在于内从中而不会写入文件,此问题一定要注意  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
            }  
            return nextOpenId;
        }
    }  
  • 相关阅读:
    C语言文法分析
    词法分析--编程感想
    词法分析(改)
    0916词法分析
    0909关于编译
    python正则表达式
    python除法运算
    python值相等和对象相同
    Java编写程序时要考虑到所有可能的异常
    hadoop 读取文件操作
  • 原文地址:https://www.cnblogs.com/wangfajun/p/8399585.html
Copyright © 2011-2022 走看看