无为清净楼资源网 Design By www.qnjia.com
本文实例为大家分享了微信公众平台实现获取用户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微信开发教程汇总》,欢迎大家学习阅读。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
无为清净楼资源网 Design By www.qnjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
无为清净楼资源网 Design By www.qnjia.com
暂无评论...
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月16日
2024年11月16日
- 《怪猎荒野》PS5Pro主机版对比:B测性能都不稳定
- 黄宝欣.1992-黄宝欣金装精选2CD【HOMERUN】【WAV+CUE】
- 群星.1996-宝丽金流行爆弹精丫宝丽金】【WAV+CUE】
- 杜德伟.2005-独领风骚新歌精选辑3CD【滚石】【WAV+CUE】
- 安与骑兵《心无疆界》[低速原抓WAV+CUE]
- 柏菲唱片-群星〈胭花四乐〉2CD[原抓WAV+CUE]
- 金典女声发烧靓曲《ClassicBeautifulSound》2CD[低速原抓WAV+CUE]
- 王杰1992《封锁我一生》粤语专辑[WAV+CUE][1G]
- 群星《一人一首成名曲 (欧美篇)》6CD[WAV/MP3][7.39G]
- 东来东往2004《回到我身边·别说我的眼泪你无所谓》先之唱片[WAV+CUE][1G]
- MF唱片-《宝马[在真HD路上]》2CD[低速原抓WAV+CUE]
- 李娜《相信我》新时代[WAV+CUE]
- 2019明达发烧碟MasterSuperiorAudiophile[WAV+CUE]
- 蔡幸娟.1993-相爱容易相处难【飞碟】【WAV+CUE】
- 陆虎.2024-是否愿意成为我的全世界【Hikoon】【FLAC分轨】