本文实例为大家分享了微信公众平台实现获取用户OpenID的方法,供大家参考,具体内容如下
Index.aspx.cs代码:
public partial class Index : System.Web.UI.Page { //用户id public string openid = ""; //公众号信息部分 public string appid = ConfigurationManager.AppSettings["AppId"]; public string appsecret = ConfigurationManager.AppSettings["AppSecret"]; public string redirect_uri =HttpUtility.UrlEncode("https://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 = ""; #endregion protected void Page_Load(object sender, EventArgs e) { /* *微信认证获取openid部分: *临时认证code */ //微信认证部分:第二步 获得code string code = Request["code"]; if (string.IsNullOrEmpty(code)) { //如果code没获取成功,重新拉取一遍 OpenAccess(); } //微信认证部分:第三步 获得openid string url = string.Format("https://api.weixin.qq.com/sns/oauth2/access_token", 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",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(); //头像url province = 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, redirect_uri); Response.Redirect(url); } //判断session存在 else { //跳转到前端页面.aspx Response.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"> <div 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;" src="/UploadFiles/2021-04-02/<%=headimgurl %>">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); } } }结果如图:
本文已被整理到了《ASP.NET微信开发教程汇总》,欢迎大家学习阅读。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月30日
2024年11月30日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]