千家信息网

如何使用.NET微信公众号获取OpenID和用户信息

发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,这期内容当中小编将会给大家带来有关如何使用.NET微信公众号获取OpenID和用户信息,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Index.aspx.cs代码:
千家信息网最后更新 2024年12月12日如何使用.NET微信公众号获取OpenID和用户信息

这期内容当中小编将会给大家带来有关如何使用.NET微信公众号获取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/oauth3/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(); //头像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/oauth3/authorize?appid={0}&redirect_uri={1}&&response_type=code&scope=snsapi_userinfo&m=oauth3#wechat_redirect", 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" %>     

openid:<%=openid%>

nickname:<%=nickname%>

sex:<%=sex%>

language:<%=language%>

city:<%=city%>

country:<%=country%>

headimgurl:

privilege:<%=privilege%>

HttpClientHelper.cs代码:

public class HttpClientHelper {  ///   ///  get请求  ///   ///   ///   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(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 t = response.Content.ReadAsStringAsync();    string s = t.Result;    result = JsonConvert.DeserializeObject(s);   }   return result;  }  ///   ///  post请求  ///   ///   /// post数据  ///   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;  }  ///   ///  发起post请求  ///   ///   /// url  /// post数据  ///   public static T PostResponse(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 t = response.Content.ReadAsStringAsync();    string s = t.Result;    result = JsonConvert.DeserializeObject(s);   }   return result;  }  ///   ///  V3接口全部为Xml形式,故有此方法  ///   ///   ///   ///   ///   public static T PostXmlResponse(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 t = response.Content.ReadAsStringAsync();    string s = t.Result;    result = XmlDeserialize(s);   }   return result;  }  ///   ///  反序列化Xml  ///   ///   ///   ///   public static T XmlDeserialize(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和用户信息了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

0