<i id="eysi1"></i>
<span id="eysi1"><optgroup id="eysi1"></optgroup></span>

\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請求\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請求\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請求\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

<\/p>\n

<\/p>"}

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

ホームページ WeChat アプレット WeChatの開発 .NET WeChat パブリック アカウントが OpenID とユーザー情報インスタンスを取得して分析

.NET WeChat パブリック アカウントが OpenID とユーザー情報インスタンスを取得して分析

Mar 31, 2017 pm 03:33 PM
マイクロチャネルパブリックプラットフォーム

この記事では、主に .NET WeChat パブリック アカウントの OpenID とユーザー情報を取得する方法を詳しく紹介します。ユーザー OpenID は、WeChat パブリック プラットフォームの開発にとって特に重要です。興味のある方は參考にしてください。

この記事の例は共有されています。 WeChat パブリック プラットフォームでは、參照用にユーザーの OpenID を取得するメソッドが実裝されています。具體的な內(nèi)容は次のとおりです。

 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("http://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)
  {

   /*
   *微信認(rèn)證獲取openid部分:
   *臨時認(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 來源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)到前端頁面.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">
 <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請求
  /// </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數(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請求
  /// </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 WeChat パブリック アカウントが OpenID とユーザー情報インスタンスを取得して分析の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)