\r\n \r\n \r\n  \r\n   \r\n    \r\n     

\r\n      openid:<%=openid%><\/p>\r\n    <\/td>\r\n    \r\n     

\r\n      nickname:<%=nickname%><\/p>\r\n    <\/td>\r\n    \r\n     

\r\n      sex:<%=sex%><\/p>\r\n    <\/td>\r\n   <\/tr>\r\n   \r\n    \r\n     

\r\n      language:<%=language%><\/p>\r\n    <\/td>\r\n    \r\n     

\r\n      city:<%=city%><\/p>\r\n    <\/td>\r\n    \r\n     

\r\n      country:<%=country%><\/p>\r\n    <\/td>\r\n   <\/tr>\r\n   \r\n    \r\n     

\r\n      headimgurl:\" alt=\"\"><\/p>\r\n    <\/td>\r\n    \r\n     

\r\n      privilege:<%=privilege%><\/p>\r\n    <\/td>\r\n    \r\n    <\/td>\r\n   <\/tr>\r\n  <\/table>\r\n <\/p>\r\n <\/form>\r\n<\/body>\r\n<\/html><\/pre>

HttpClientHelper.cs代碼:<\/p>

<\/p>

public class HttpClientHelper\r\n {\r\n  \/\/\/ \r\n  \/\/\/  get請(qǐng)求\r\n  \/\/\/ <\/summary>\r\n  \/\/\/ <\/param>\r\n  \/\/\/ <\/returns>\r\n  public static string GetResponse(string url)\r\n  {\r\n   if (url.StartsWith(\"https\"))\r\n   {\r\n    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;\r\n   }\r\n\r\n   var httpClient = new HttpClient();\r\n   httpClient.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue(\"application\/json\"));\r\n\r\n   HttpResponseMessage response = httpClient.GetAsync(url).Result;\r\n\r\n   if (response.IsSuccessStatusCode)\r\n   {\r\n    string result = response.Content.ReadAsStringAsync().Result;\r\n    return result;\r\n   }\r\n   return null;\r\n  }\r\n\r\n  public static T GetResponse(string url)\r\n   where T : class, new()\r\n  {\r\n   if (url.StartsWith(\"https\"))\r\n    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;\r\n\r\n   var httpClient = new HttpClient();\r\n   httpClient.DefaultRequestHeaders.Accept.Add(\r\n    new MediaTypeWithQualityHeaderValue(\"application\/json\"));\r\n   HttpResponseMessage response = httpClient.GetAsync(url).Result;\r\n\r\n   T result = default(T);\r\n\r\n   if (response.IsSuccessStatusCode)\r\n   {\r\n    Task t = response.Content.ReadAsStringAsync();\r\n    string s = t.Result;\r\n\r\n    result = JsonConvert.DeserializeObject(s);\r\n   }\r\n   return result;\r\n  }\r\n\r\n  \/\/\/ \r\n  \/\/\/  post請(qǐng)求\r\n  \/\/\/ <\/summary>\r\n  \/\/\/ <\/param>\r\n  \/\/\/ post數(shù)據(jù)<\/param>\r\n  \/\/\/ <\/returns>\r\n  public static string PostResponse(string url, string postData)\r\n  {\r\n   if (url.StartsWith(\"https\"))\r\n    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;\r\n\r\n   HttpContent httpContent = new StringContent(postData);\r\n   httpContent.Headers.ContentType = new MediaTypeHeaderValue(\"application\/json\");\r\n   var httpClient = new HttpClient();\r\n\r\n   HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;\r\n\r\n   if (response.IsSuccessStatusCode)\r\n   {\r\n    string result = response.Content.ReadAsStringAsync().Result;\r\n    return result;\r\n   }\r\n   return null;\r\n  }\r\n\r\n  \/\/\/ \r\n  \/\/\/  發(fā)起post請(qǐng)求\r\n  \/\/\/ <\/summary>\r\n  \/\/\/ <\/typeparam>\r\n  \/\/\/ url<\/param>\r\n  \/\/\/ post數(shù)據(jù)<\/param>\r\n  \/\/\/ <\/returns>\r\n  public static T PostResponse(string url, string postData)\r\n   where T : class, new()\r\n  {\r\n   if (url.StartsWith(\"https\"))\r\n    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;\r\n\r\n   HttpContent httpContent = new StringContent(postData);\r\n   httpContent.Headers.ContentType = new MediaTypeHeaderValue(\"application\/json\");\r\n   var httpClient = new HttpClient();\r\n\r\n   T result = default(T);\r\n\r\n   HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;\r\n\r\n   if (response.IsSuccessStatusCode)\r\n   {\r\n    Task t = response.Content.ReadAsStringAsync();\r\n    string s = t.Result;\r\n\r\n    result = JsonConvert.DeserializeObject(s);\r\n   }\r\n   return result;\r\n  }\r\n\r\n  \/\/\/ \r\n  \/\/\/  V3接口全部為Xml形式,故有此方法\r\n  \/\/\/ <\/summary>\r\n  \/\/\/ <\/typeparam>\r\n  \/\/\/ <\/param>\r\n  \/\/\/ <\/param>\r\n  \/\/\/ <\/returns>\r\n  public static T PostXmlResponse(string url, string xmlString)\r\n   where T : class, new()\r\n  {\r\n   if (url.StartsWith(\"https\"))\r\n    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;\r\n\r\n   HttpContent httpContent = new StringContent(xmlString);\r\n   httpContent.Headers.ContentType = new MediaTypeHeaderValue(\"application\/json\");\r\n   var httpClient = new HttpClient();\r\n\r\n   T result = default(T);\r\n\r\n   HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;\r\n\r\n   if (response.IsSuccessStatusCode)\r\n   {\r\n    Task t = response.Content.ReadAsStringAsync();\r\n    string s = t.Result;\r\n\r\n    result = XmlDeserialize(s);\r\n   }\r\n   return result;\r\n  }\r\n\r\n  \/\/\/ \r\n  \/\/\/  反序列化Xml\r\n  \/\/\/ <\/summary>\r\n  \/\/\/ <\/typeparam>\r\n  \/\/\/ <\/param>\r\n  \/\/\/ <\/returns>\r\n  public static T XmlDeserialize(string xmlString)\r\n   where T : class, new()\r\n  {\r\n   try\r\n   {\r\n    var ser = new XmlSerializer(typeof (T));\r\n    using (var reader = new StringReader(xmlString))\r\n    {\r\n     return (T) ser.Deserialize(reader);\r\n    }\r\n   }\r\n   catch (Exception ex)\r\n   {\r\n    throw new Exception(\"XmlDeserialize發(fā)生異常:xmlString:\" + xmlString + \"異常信息:\" + ex.Message);\r\n   }\r\n  }\r\n }<\/pre>

結(jié)果如圖:<\/p>\n

\".NET微信公眾號(hào)獲取OpenID和用戶信息實(shí)例解析\"<\/p>"}

国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁(yè) 微信小程序 微信開發(fā) .NET微信公眾號(hào)獲取OpenID和用戶信息實(shí)例解析

.NET微信公眾號(hào)獲取OpenID和用戶信息實(shí)例解析

Mar 31, 2017 pm 03:33 PM
微信公眾平臺(tái)

這篇文章主要為大家詳細(xì)介紹了.NET微信公眾號(hào)獲取OpenID和用戶信息的方法,用戶OpenID對(duì)于微信公眾平臺(tái)開發(fā)尤為重要,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了微信公眾平臺(tái)實(shí)現(xiàn)獲取用戶OpenID的方法,供大家參考,具體內(nèi)容如下

Index.aspx.cs代碼:


 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沒獲取成功,重新拉取一遍
    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();
  }

  /*
   * 接入入口
   * 開放到微信菜單中調(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內(nèi)容:


<%@ 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;" 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請(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);
   }
  }
 }

結(jié)果如圖:

.NET微信公眾號(hào)獲取OpenID和用戶信息實(shí)例解析

以上是.NET微信公眾號(hào)獲取OpenID和用戶信息實(shí)例解析的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276