由于我们知道,AccessToken默认是7200秒过期,因此在这个时间段里面,我们尽可能使用缓存来记录它的值,如果超过了这个时间,我们调用这个方法的时候,它会自动重新获取一个新的值给我们了。
3、获取关注用户列表
获取关注用户列表,一次拉取API调用,最多拉取10000个关注者的OpenID,可以通过多次拉取的方式来满足需求。微信的接口定义如下所示。
http请求方式: GET(请使用https协议)
https://www.easck.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID
这个接口返回的数据是
{"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"}
根据返回的Json数据定义,我们还需要定义两个实体类,用来存放返回的结果。
/// <summary>
/// 获取关注用户列表的Json结果
/// </summary>
public class UserListJsonResult : BaseJsonResult
{
/// <summary>
/// 关注该公众账号的总用户数
/// </summary>
public int total { get; set; }
/// <summary>
/// 拉取的OPENID个数,最大值为10000
/// </summary>
public int count { get; set; }
/// <summary>
/// 列表数据,OPENID的列表
/// </summary>
public OpenIdListData data { get; set; }
/// <summary>
/// 拉取列表的后一个用户的OPENID
/// </summary>
public string next_openid { get; set; }
}
/// <summary>
/// 列表数据,OPENID的列表
/// </summary>
public class OpenIdListData
{
/// <summary>
/// OPENID的列表
/// </summary>
public List<string> openid { get; set; }
}
为了获取相关的用户信息,我定义了一个接口,用来获取用户的信息,接口定义如下所示。
/// <summary>
/// 微信用户管理的API接口
/// </summary>
public interface IUserApi
{
/// <summary>
/// 获取关注用户列表
/// </summary>
/// <param name="accessToken">调用接口凭证</param>
/// <param name="nextOpenId">第一个拉取的OPENID,不填默认从头开始拉取</param>
/// <returns></returns>
List<string> GetUserList(string accessToken, string nextOpenId = null);
/// <summary>
/// 获取用户基本信息
/// </summary>
/// <param name="accessToken">调用接口凭证</param>
/// <param name="openId">普通用户的标识,对当前公众号唯一</param>
/// <param name="lang">返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语</param>
UserJson GetUserDetail(string accessToken, string openId, Language lang = Language.zh_CN);










