温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

微信公众号如何查看关注者接口的.NET

发布时间:2020-12-31 11:03:29 来源:亿速云 阅读:193 作者:小新 栏目:移动开发

这篇文章主要介绍了微信公众号如何查看关注者接口的.NET,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

实体类:

 public class userlist   {     public string total { get; set; }     public string count { get; set; }     public userlistopenid data { get; set; }     public string next_openid { get; set; }   }
 public class userlistopenid   {     public List<string> openid { get; set;   }
 public class userdetail   {     public int subscribe { get; set; }     public string openid { get; set; }     public string nickname { get; set; }     public int sex { get; set; }     public string language { get; set; }     public string city { get; set; }     public string province { get; set; }     public string country { get; set; }     public string headimgurl { get; set; }     public int subscribe_time { get; set; }     public string unionid { get; set; }     public string remark { get; set; }     public int groupid { get; set; }     public int[] tagid_list { get; set; }   }

getUser.aspx代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="getUser.aspx.cs" Inherits="MyTest.WebUI.Manager.usermsg.getUser" %> <!DOCTYPE html> <html lang="zh-CN"> <head>   <meta charset="utf-8">   <meta http-equiv="X-UA-Compatible" content="IE=edge">   <meta name="viewport" content="width=device-width, initial-scale=1">   <title></title>   <!-- Bootstrap -->   <link href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">   <!--[if lt IE 9]>    <script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script>    <script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script>   <![endif]--> </head> <body>   <form runat="server">     <p class="container">       <p class="row">         <p class="col-md-6 col-md-push-2">           <asp:Button class="btn btn-primary" ID="btnGet" runat="server" Text="获取所有用户openID" OnClick="btnGet_Click" />         </p>         <p class="col-md-6 col-md-pull-2">           <asp:DropDownList CssClass="form-control" ID="ddlopenids" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlopenids_SelectedIndexChanged"></asp:DropDownList>           <asp:Label ID="lblMSG" runat="server" Text=""></asp:Label>           <asp:Image class="img-circle" ID="imgHead" runat="server" Width="180px" Height="180px" />         </p>       </p>     </p>     <script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>     <script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>   </form> </body> </html>
 public partial class getUser : System.Web.UI.Page   {     protected void Page_Load(object sender, EventArgs e)     {     }     //获取用户列表     protected void btnGet_Click(object sender, EventArgs e)     {       string next_opid = string.Empty;       string url = "https://api.weixin.qq.com/cgi-bin/user/get?access_token="+mainArg.get_Token()+"&next_openid=";       HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);       using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())       {         StreamReader sr = new StreamReader(response.GetResponseStream());         string result = sr.ReadToEnd();         sr.Close();         MyTest.Common.Entity.userlist userlist = MyTest.Common.Util.JsonEntityExchange<MyTest.Common.Entity.userlist>.Json2Entity(result);         //Response.Write(userlist.count + "/"+userlist.data+"/"+userlist.next_openid+"/"+userlist.total);         ddlopenids.DataSource = userlist.data.openid;         ddlopenids.DataTextField = "";         ddlopenids.DataValueField = "";         ddlopenids.DataBind();         ListItem item = new ListItem();         item.Text = "--请选择用户的openID--";         item.Value = "--0--";         ddlopenids.Items.Insert(0, item);       }     }     //获取用户基本信息(包括UnionID机制)     protected void ddlopenids_SelectedIndexChanged(object sender, EventArgs e)     {       string url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token="+ mainArg.get_Token() + "&openid="+ddlopenids.SelectedItem.Text+"&lang=zh_CN ";       HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);       using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())       {         StreamReader sr = new StreamReader(response.GetResponseStream());         string result = sr.ReadToEnd();         sr.Close();         MyTest.Common.Entity.userdetail user= MyTest.Common.Util.JsonEntityExchange<MyTest.Common.Entity.userdetail>.Json2Entity(result);         lblMSG.Text = user.subscribe + "/" + user.openid + "/" + user.nickname + "/";         imgHead.ImageUrl = user.headimgurl;       }     }   }

mainArg.cs获取accessToken帮助类:

 public class mainArg   {     //测试号     public static string appid = "wx3eb5bf1290db2ca0";     public static string secret = "e6013be0a7338c7d3e02877db116e231";     public string jsapi_ticket;     public string noncestr;     public long timestamp;     public string signature;     private static string path = HttpContext.Current.Server.MapPath(@"~/TemplePath");     private static string tokenPath = HttpContext.Current.Server.MapPath(@"~/TemplePath/token.txt");     private static string ticketPath = HttpContext.Current.Server.MapPath(@"~/TemplePath/ticket.txt");     public mainArg() {       noncestr = getNonceStr();       timestamp = getTime();     }     /// <summary>     /// 获取access_token     /// </summary>     /// <returns></returns>     public static string get_Token()     {       string token = null;       //判断是否存在或过期       if (File.Exists(tokenPath)) {         FileStream fs = new FileStream(tokenPath, FileMode.Open);         var serializer = new DataContractJsonSerializer(typeof(AccToken));         AccToken readJSToken = (AccToken)serializer.ReadObject(fs);         fs.Close();         FileInfo fi = new FileInfo(tokenPath);         if (CheckTimeOut(fi.LastWriteTime) < (readJSToken.expires_in-200)) {           return token = readJSToken.access_token;         }       }       string url = @"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&";       string urlarg = @"appid=" + appid + @"&secret=" + secret;       //      HttpUtility.UrlEncode(appid,Encoding.GetEncoding("utf-8"));       url += urlarg;       HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);       using (WebResponse response = req.GetResponse())       {         Stream s = response.GetResponseStream();         StreamReader sr = new StreamReader(s);         token = sr.ReadToEnd();         if (!Directory.Exists(path))         {           Directory.CreateDirectory(path);         }         if (File.Exists(tokenPath))         {           File.Delete(tokenPath);         }         FileStream fs = File.Create(tokenPath);         StreamWriter sw = new StreamWriter(fs);         sw.Write(token);         sw.Flush();         sw.Close();         fs.Close();         FileStream fs1 = new FileStream(tokenPath, FileMode.Open);         var serializer = new DataContractJsonSerializer(typeof(AccToken));         AccToken readJSToken = (AccToken)serializer.ReadObject(fs1);         fs1.Close();         token = readJSToken.access_token;         return token;       }     }     /// <summary>     /// 获取ticket     /// </summary>     /// <returns></returns>     public string getTicket() {       string ticket = null;       // 判断是否存在或过期       if (File.Exists(ticketPath))       {         FileStream fs = new FileStream(ticketPath, FileMode.Open);         var serializer = new DataContractJsonSerializer(typeof(JsTicket));         JsTicket readJSTicket = (JsTicket)serializer.ReadObject(fs);         fs.Close();         FileInfo fi = new FileInfo(ticketPath);         if (CheckTimeOut(fi.LastWriteTime) < (readJSTicket.expires_in - 200))         {           return ticket = readJSTicket.ticket;         }       }       string url = @"https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&";       string urlarg = @"access_token="+get_Token();       //      HttpUtility.UrlEncode(appid,Encoding.GetEncoding("utf -8"));       url += urlarg;       HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);       using (WebResponse response = req.GetResponse())       {         Stream s = response.GetResponseStream();         StreamReader sr = new StreamReader(s);         ticket = sr.ReadToEnd();         if (!Directory.Exists(path))         {           Directory.CreateDirectory(path);         }         if (File.Exists(ticketPath))         {           File.Delete(ticketPath);         }         FileStream fs = File.Create(ticketPath);         StreamWriter sw = new StreamWriter(fs);         sw.Write(ticket);         sw.Flush();         sw.Close();         fs.Close();         FileStream fs1 = new FileStream(ticketPath, FileMode.Open);         var serializer = new DataContractJsonSerializer(typeof(JsTicket));         JsTicket readJSTicket = (JsTicket)serializer.ReadObject(fs1);         fs1.Close();         ticket = readJSTicket.ticket;         return ticket;       }     }     //     public static long getTime() {       return Convert.ToInt64((DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds);     }     public static string getTimeString(DateTime dt)     {       TimeSpan ts = dt.ToUniversalTime() - new DateTime(1970, 1, 1, 0, 0, 0, 0);       return Convert.ToInt64(ts.TotalSeconds).ToString();     }     //获取16位随机字符串     public static string getNonceStr()     {       int length = 16;       string chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";       string str = "";       Random rad = new Random();       for (int i = 0; i < length; i++)       {         str += chars.Substring(rad.Next(0, chars.Length - 1), 1);       }       return str;     }     //得到签名     public string getSign() {       jsapi_ticket = getTicket();       string s1 = string.Format("jsapi_ticket={0}&noncestr={1}&timestamp={2}&url=http://winsee.imwork.net/Manager/Main/testjs.aspx", jsapi_ticket, noncestr, timestamp.ToString());            signature = GetSHA1(s1);       return signature;     }     public static string GetSHA1(string strSource)     {       string strResult = string.Empty;       System.Security.Cryptography.SHA1 sha = System.Security.Cryptography.SHA1.Create();       byte[] bytResult = sha.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strSource));       for (int i = 0; i < bytResult.Length; i++)       {         strResult = strResult + bytResult[i].ToString("x2");       }       return strResult;     }     //SHA1哈希加密算法      public static string GetSHA1_1(string str_sha1_in)     {       SHA1 sha1 = new SHA1CryptoServiceProvider();       byte[] bytes_sha1_in = Encoding.Default.GetBytes(str_sha1_in);       byte[] bytes_sha1_out = sha1.ComputeHash(bytes_sha1_in);       string str_sha1_out = BitConverter.ToString(bytes_sha1_out);       str_sha1_out = str_sha1_out.Replace("-", "").ToLower();       return str_sha1_out;     }     // 判断是否超过7200s     public static long CheckTimeOut(DateTime changeTime)     {       return Convert.ToInt64((DateTime.Now - changeTime).TotalSeconds);     }   }  # region 创建Json序列化 及反序列化类目    //创建JSon类 保存文件 ticket.txt   public class AccToken   {     public string access_token { get; set; }     public long expires_in { get; set; }   }   //创建从微信返回结果的一个类 用于获取ticket    public class JsTicket   {     public long errcode { get; set; }     public string errmsg { get; set; }     public string ticket { get; set; }     public long expires_in { get; set; }   }   #endregion

JSon序列化,反序列化

public class JsonEntityExchange<T> where T:new()   {     /// <summary>     /// json转实体LIST     /// </summary>     /// <param name="JsonStr"></param>     /// <returns></returns>     public static List<T> Json2Entitys(string JsonStr)     {       JavaScriptSerializer Serializer = new JavaScriptSerializer();       List<T> objs = Serializer.Deserialize<List<T>>(JsonStr);       return objs;     }     /// <summary>     /// json转实体     /// </summary>     /// <param name="json"></param>     /// <returns></returns>     public static T Json2Entity(string json)     {       T obj = Activator.CreateInstance<T>();       using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))       {         DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());         return (T)serializer.ReadObject(ms);       }     }     /// <summary>     /// 实体转json     /// </summary>     /// <param name="lists">实体list</param>     /// <returns></returns>     public static string Entity2Json(List<T> lists) {       return new JavaScriptSerializer().Serialize(lists);     }   }

结果如图:

微信公众号如何查看关注者接口的.NET

感谢你能够认真阅读完这篇文章,希望小编分享的“微信公众号如何查看关注者接口的.NET”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI