1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 微信公众号api关注接口php 微信公众号查看关注者接口的.NET实例教程

微信公众号api关注接口php 微信公众号查看关注者接口的.NET实例教程

时间:2023-03-27 15:50:13

相关推荐

微信公众号api关注接口php 微信公众号查看关注者接口的.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 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代码:

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./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();

mon.Entity.userlist userlist = mon.Util.JsonEntityExchange.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./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();

mon.Entity.userdetail user= mon.Util.JsonEntityExchange.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();

}

///

/// 获取access_token

///

///

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./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;

}

}

///

/// 获取ticket

///

///

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./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=/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 = puteHash(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 = puteHash(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 where T:new()

{

///

/// json转实体LIST

///

///

///

public static List Json2Entitys(string JsonStr)

{

JavaScriptSerializer Serializer = new JavaScriptSerializer();

List objs = Serializer.Deserialize>(JsonStr);

return objs;

}

///

/// json转实体

///

///

///

public static T Json2Entity(string json)

{

T obj = Activator.CreateInstance();

using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))

{

DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());

return (T)serializer.ReadObject(ms);

}

}

///

/// 实体转json

///

/// 实体list

///

public static string Entity2Json(List lists) {

return new JavaScriptSerializer().Serialize(lists);

}

}

结果如图:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。