获取关注者列表(OpenID)
如果想要群发消息,需要先获取所有的微信号。本节课讲解如何获取所有的微信号。
其实并不是真正获取这些微信号的用户信息,只需要获取它的 openid 就可以了。有了这个 openid,就可以对它进行发送短消息。
获取用户列表接口说明
公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串 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,不填默认从头开始拉取。如果要获取 10001 之后的关注者的 openid,就要填写第 10000 个的 openid 到 NEXT_OPENID 参数中。如果平常用户不多,可以不填。
只需要请求以下地址即可:
https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=
添加获取用户的 Handler
public class UserGetHandler : WeiXinHandlerBase, IWeiXinHandler
{
private string url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token={0}&next_openid=";
public T DoGet<T>(params string[] param) where T : class
{
url = string.Format(url, accessTokenInfo.access_token);
var json = HtmlHelper.HttpGet(url);
//if (json.Contains("errcode"))
//{
// 这里就表示出错了
//}
var output = JsonHelper.DeserializeJsonToObject<T>(json);
return output;
}
public T DoPost<T>(params string[] param) where T : class
{
throw new NotImplementedException();
}
}Code language: HTML, XML (xml)
控制器中调用
public IActionResult UserGet()
{
var result = new UserGetHandler().DoGet<UserInfo>();
return Json(result);
}Code language: PHP (php)
序列化实体对象
public class UserInfo
{
public int total { set; get; }
public int count { set; get; }
public OpenIDInfo data = new OpenIDInfo();
public string next_openid { set; get; }
}
public class OpenIDInfo
{
public string[] openid { set; get; }
}Code language: JavaScript (javascript)
访问测试
访问地址:
http://dsfdsfdsf.imwork.net/home/userget
Previous: 04-获取密钥AccessToken
Next: 06-群发文本短消息的实现