UserApi.java
4.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/**
* Copyright (c) 2011-2014, James Zhan 詹波 (jfinal@126.com).
*
* Licensed under the Apache License, Version 2.0 (the "License");
*/
package com.jfinal.weixin.sdk.api;
import com.alibaba.fastjson.JSONObject;
import com.jfinal.kit.PropKit;
import com.jfinal.weixin.sdk.kit.ParaMap;
import com.jfinal.weixin.sdk.utils.HttpUtils;
import com.jfinal.weixin.sdk.utils.JsonUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 用户管理 API
* <pre>
* https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
* </pre>
*/
public class UserApi {
private static String getUserInfo = "https://api.weixin.qq.com/cgi-bin/user/info";
private static String getFollowers = "https://api.weixin.qq.com/cgi-bin/user/get";
private static String batchGetUserInfo = "https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=";
/**
* 获取用户基本信息(包括UnionID机制)
* @param openId 普通用户的标识,对当前公众号唯一
* @return ApiResult
*/
public static ApiResult getUserInfo(String openId) {
ParaMap pm = ParaMap.create("access_token", AccessTokenApi.getAccessTokenStr()).put("openid", openId).put("lang", "zh_CN");
return new ApiResult(HttpUtils.get(getUserInfo, pm.getData()));
}
/**
* 获取用户列表
* @param nextOpenid 第一个拉取的OPENID,不填默认从头开始拉取
* @return ApiResult
*/
public static ApiResult getFollowers(String nextOpenid) {
ParaMap pm = ParaMap.create("access_token", AccessTokenApi.getAccessTokenStr());
if (nextOpenid != null)
pm.put("next_openid", nextOpenid);
return new ApiResult(HttpUtils.get(getFollowers, pm.getData()));
}
/**
* 获取用户列表
* @return ApiResult
*/
public static ApiResult getFollows() {
return getFollowers(null);
}
/**
* 批量获取用户基本信息, by Unas
* @param jsonStr json字符串
* @return ApiResult
*/
public static ApiResult batchGetUserInfo(String jsonStr) {
String jsonResult = HttpUtils.post(batchGetUserInfo + AccessTokenApi.getAccessTokenStr(), jsonStr);
return new ApiResult(jsonResult);
}
/**
* 批量获取用户基本信息
* @param openIdList openid列表
* @return ApiResult
*/
public static ApiResult batchGetUserInfo(List<String> openIdList) {
Map<String, List<Map<String, Object>>> userListMap = new HashMap<String, List<Map<String, Object>>>();
List<Map<String, Object>> userList = new ArrayList<Map<String,Object>>();
for (String openId : openIdList) {
Map<String, Object> mapData = new HashMap<String, Object>();
mapData.put("openid", openId);
mapData.put("lang", "zh_CN");
userList.add(mapData);
}
userListMap.put("user_list", userList);
return batchGetUserInfo(JsonUtils.toJson(userListMap));
}
private static String updateRemarkUrl = "https://api.weixin.qq.com/cgi-bin/user/info/updateremark?access_token=";
/**
* 设置备注名
* @param openid 用户标识
* @param remark 新的备注名,长度必须小于30字符
* @return {ApiResult}
*/
public static ApiResult updateRemark(String openid, String remark) {
String url = updateRemarkUrl + AccessTokenApi.getAccessTokenStr();
Map<String, String> mapData = new HashMap<String, String>();
mapData.put("openid", openid);
mapData.put("remark", remark);
String jsonResult = HttpUtils.post(url, JsonUtils.toJson(mapData));
return new ApiResult(jsonResult);
}
public static void main(String[] args) {
PropKit.use("a_little_config.txt");
ApiConfig apiConfig = new ApiConfig();
apiConfig.setAppId(PropKit.get("appId"));
apiConfig.setAppSecret(PropKit.get("appSecret"));
ApiConfigKit.putApiConfig(apiConfig);
System.out.println(JSONObject.toJSON(UserApi.getUserInfo("otP1mxK09lwhyW47--vctfw7MIGg"))+"");
}
}