


.NET WeChat public account obtains OpenID and user information instance analysis
Mar 31, 2017 pm 03:33 PMThis article mainly introduces in detail the method of obtaining OpenID and user information for .NET WeChat public account. User OpenID is particularly important for the development of WeChat public platform. Interested friends can refer to it
The example in this article shares with you the method of obtaining the user's OpenID on the WeChat public platform for your reference. The specific content is as follows
Index.aspx.cs code:
public partial class Index : System.Web.UI.Page { //用戶id public string openid = ""; //公眾號(hào)信息部分 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 = "【刪除這個(gè)并填入請(qǐng)求類型,例如:snsapi_userinfo】"; #region 顯示頁(yè)面 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 = ""; #endregion protected void Page_Load(object sender, EventArgs e) { /* *微信認(rèn)證獲取openid部分: *臨時(shí)認(rèn)證code */ //微信認(rèn)證部分:第二步 獲得code string code = Request["code"]; if (string.IsNullOrEmpty(code)) { //如果code沒(méi)獲取成功,重新拉取一遍 OpenAccess(); } //微信認(rèn)證部分:第三步 獲得openid string 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); //微信認(rèn)證部分:第四步 獲得更多信息 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轉(zhuǎn)為數(shù)組 //以下是第四步獲得的信息: nickname = outputObj1["nickname"].ToString(); //昵稱 sex = outputObj1["sex"].ToString(); //性別什么的 headimgurl = outputObj1["headimgurl"].ToString(); //頭像url province = outputObj1["province"].ToString(); ; country = outputObj1["country"].ToString(); ; language = outputObj1["language"].ToString(); ; city = outputObj1["city"].ToString(); ; //將獲得的用戶信息填入到session中 Session["openid"] = outputObj1["openid"]; //轉(zhuǎn)向回入口 //OpenAccess(); } /* * 接入入口 * 開(kāi)放到微信菜單中調(diào)用 * @param $dir_url 來(lái)源url * @since 1.0 * @return void */ public void OpenAccess() { //判斷session不存在 if (Session["openid"] == null) { //認(rèn)證第一步:重定向跳轉(zhuǎn)至認(rèn)證網(wǎng)址 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 { //跳轉(zhuǎn)到前端頁(yè)面.aspx Response.Redirect(Request.Url.ToString()); } } }
Index.aspx content:
<%@ 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 src="/static/imghw/default1.png" data-src="<%=headimgurl % alt=".NET WeChat public account obtains OpenID and user information instance analysis" >" class="lazy" width="50px;" alt=""></p> </td> <td> <p> privilege:<%=privilege%></p> </td> <td> </td> </tr> </table> </p> </form> </body> </html>
HttpClientHelper.cs code:
##
public class HttpClientHelper { /// <summary> /// get請(qǐng)求 /// </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請(qǐng)求 /// </summary> /// <param name="url"></param> /// <param name="postData">post數(shù)據(jù)</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> /// 發(fā)起post請(qǐng)求 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="url">url</param> /// <param name="postData">post數(shù)據(jù)</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發(fā)生異常:xmlString:" + xmlString + "異常信息:" + ex.Message); } } }The result is as shown:
The above is the detailed content of .NET WeChat public account obtains OpenID and user information instance analysis. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)
