重庆小潘seo博客

当前位置:首页 > 重庆网络营销 > 小潘杂谈 >

小潘杂谈

.NET微信公众号获取OpenID和用户信息实例解析

时间:2020-09-12 13:30:08 作者:重庆seo小潘 来源:
这篇文章主要为大家详细介绍了.NET微信公众号获取OpenID和用户信息的方法,用户OpenID对于微信公众平台开发尤为重要,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了微信公众平台实现获取用户OpenID的方法,供大家参考,具体内容如下 Index.aspx.cs代码

这篇文章主要为大家详细介绍了.NET微信公众号获取OpenID和用户信息的方法,用户OpenID对于微信公众平台开发尤为重要,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了微信公众平台实现获取用户OpenID的方法,供大家参考,具体内容如下

Index.aspx.cs代码: public partial class Index : System.Web.UI.Page {//用户idpublic string openid = "";//公众号信息部分public string appid = ConfigurationManager.AppSettings["AppId"];public string appsecret = ConfigurationManager.AppSettings["AppSecret"];public string redirect_uri =HttpUtility.UrlEncode("http://www.jb51.net");public string scope = "【删除这个并填入请求类型,例如:snsapi_userinfo】";#region 显示页面public string accesstoken;public string nickname;public string sex;public string headimgurl;public string province;public string country;public string language;public string city;public string privilege = "";#endregionprotected void Page_Load(object sender, EventArgs e){/**微信认证获取openid部分:*临时认证code*///微信认证部分:第二步 获得codestring code = Request["code"];if (string.IsNullOrEmpty(code)){//如果code没获取成功,重新拉取一遍OpenAccess();}//微信认证部分:第三步 获得openidstring url = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code", appid, appsecret, code);string result = HttpClientHelper.GetResponse(url);LogHelper.WriteFile(result);JObject outputObj = JObject.Parse(result);//微信认证部分:第四步 获得更多信息accesstoken = outputObj["access_token"].ToString();openid = outputObj["openid"].ToString();url = string.Format("https://api.weixin.qq.com/sns/userinfo?access_token={0}&openid={1}&lang=zh_CN",accesstoken,openid);string result1 = HttpClientHelper.GetResponse(url);LogHelper.WriteFile(result1);JObject outputObj1 = JObject.Parse(result1);//将json转为数组//以下是第四步获得的信息:nickname = outputObj1["nickname"].ToString(); //昵称sex = outputObj1["sex"].ToString(); //性别什么的headimgurl = outputObj1["headimgurl"].ToString(); //头像urlprovince = outputObj1["province"].ToString(); ;country = outputObj1["country"].ToString(); ;language = outputObj1["language"].ToString(); ;city = outputObj1["city"].ToString(); ;//将获得的用户信息填入到session中Session["openid"] = outputObj1["openid"];//转向回入口//OpenAccess();}/** 接入入口* 开放到微信菜单中调用* @param $dir_url 来源url* @since 1.0* @return void*/public void OpenAccess(){//判断session不存在if (Session["openid"] == null){//认证第一步:重定向跳转至认证网址string url = string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&&response_type=code&scope=snsapi_userinfo&m=oauth2#wechat_redirect", appid, redirect_uri);Response.Redirect(url);}//判断session存在else{//跳转到前端页面.aspxResponse.Redirect(Request.Url.ToString());}} }Index.aspx内容:<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="TEST.Index" %><!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title> <meta name="viewport" content="width=device-width, initial-scale=1" /> <style type="text/css">td{word-wrap: break-word;} </style> <script type="text/javascript"> </script></head><body> <form id="form1" runat="server"> <p id="wu" runat="server"><table style="width: 100%;"><tr><td style="width: 150px;"><p>openid:<%=openid%></p></td><td><p>nickname:<%=nickname%></p></td><td><p>sex:<%=sex%></p></td></tr><tr><td><p>language:<%=language%></p></td><td><p>city:<%=city%></p></td><td><p>country:<%=country%></p></td></tr><tr><td><p>headimgurl:<img width="50px;" alt=".NET微信公众号获取OpenID和用户信息实例解析" src="<%=headimgurl %>" alt=""></p></td><td><p>privilege:<%=privilege%></p></td><td></td></tr></table> </p> </form></body></html>HttpClientHelper.cs代码:public class HttpClientHelper {/// <summary>///get请求/// </summary>/// <param name="url"></param>/// <returns></returns>public static string GetResponse(string url){if (url.StartsWith("https")){ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;}var httpClient = new HttpClient();httpClient.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json"));HttpResponseMessage response = httpClient.GetAsync(url).Result;if (response.IsSuccessStatusCode){string result = response.Content.ReadAsStringAsync().Result;return result;}return null;}public static T GetResponse<T>(string url)where T : class, new(){if (url.StartsWith("https"))ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;var httpClient = new HttpClient();httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));HttpResponseMessage response = httpClient.GetAsync(url).Result;T result = default(T);if (response.IsSuccessStatusCode){Task<string> t = response.Content.ReadAsStringAsync();string s = t.Result;result = JsonConvert.DeserializeObject<T>(s);}return result;}/// <summary>///post请求/// </summary>/// <param name="url"></param>/// <param name="postData">post数据</param>/// <returns></returns>public static string PostResponse(string url, string postData){if (url.StartsWith("https"))ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;HttpContent httpContent = new StringContent(postData);httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");var httpClient = new HttpClient();HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;if (response.IsSuccessStatusCode){string result = response.Content.ReadAsStringAsync().Result;return result;}return null;}/// <summary>///发起post请求/// </summary>/// <typeparam name="T"></typeparam>/// <param name="url">url</param>/// <param name="postData">post数据</param>/// <returns></returns>public static T PostResponse<T>(string url, string postData)where T : class, new(){if (url.StartsWith("https"))ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;HttpContent httpContent = new StringContent(postData);httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");var httpClient = new HttpClient();T result = default(T);HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;if (response.IsSuccessStatusCode){Task<string> t = response.Content.ReadAsStringAsync();string s = t.Result;result = JsonConvert.DeserializeObject<T>(s);}return result;}/// <summary>///V3接口全部为Xml形式,故有此方法/// </summary>/// <typeparam name="T"></typeparam>/// <param name="url"></param>/// <param name="xmlString"></param>/// <returns></returns>public static T PostXmlResponse<T>(string url, string xmlString)where T : class, new(){if (url.StartsWith("https"))ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;HttpContent httpContent = new StringContent(xmlString);httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");var httpClient = new HttpClient();T result = default(T);HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;if (response.IsSuccessStatusCode){Task<string> t = response.Content.ReadAsStringAsync();string s = t.Result;result = XmlDeserialize<T>(s);}return result;}/// <summary>///反序列化Xml/// </summary>/// <typeparam name="T"></typeparam>/// <param name="xmlString"></param>/// <returns></returns>public static T XmlDeserialize<T>(string xmlString)where T : class, new(){try{var ser = new XmlSerializer(typeof (T));using (var reader = new StringReader(xmlString)){return (T) ser.Deserialize(reader);}}catch (Exception ex){throw new Exception("XmlDeserialize发生异常:xmlString:" + xmlString + "异常信息:" + ex.Message);}} }结果如图:

.NET微信公众号获取OpenID和用户信息实例解析以上就是.NET微信公众号获取OpenID和用户信息实例解析的详细内容,更多请关注小潘博客其它相关文章!