最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MVC微信網(wǎng)頁(yè)授權(quán)獲取用戶OpenId

 更新時(shí)間:2016年09月14日 15:03:53   作者:赤月奇  
這篇文章主要為大家詳細(xì)介紹了MVC微信網(wǎng)頁(yè)授權(quán),在模板頁(yè)中獲取用戶openid,感興趣的小伙伴們可以參考一下

最近開(kāi)發(fā)微信公眾平臺(tái),做下記錄,以前也開(kāi)發(fā)過(guò),這次開(kāi)發(fā)又給忘了,搞了半天,還是做個(gè)筆記為好。 

注意框架為MVC 開(kāi)發(fā)微信公眾平臺(tái)。場(chǎng)景為,在模板頁(yè)中獲取用戶openid,想要進(jìn)行驗(yàn)證的頁(yè)面,集成模板頁(yè)就可以了。 

在_Layout.cshtml中加入如下代碼 

<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>@ViewBag.Title - My ASP.NET Application</title>
  @Styles.Render("~/Content/css")
  @Scripts.Render("~/bundles/modernizr")
  @{
    var code = HttpContext.Current.Request["code"];
    Log.logmsg(code);
    string urlpath = HttpContext.Current.Request.Url.AbsoluteUri.ToString();
    ViewBag.at = AdminUtil.GetOpenID(urlpath, code);
  }
</head> 

類AdminUtil中加入GetOpenID方法 

#region 獲取OpenID
    /// <summary>
    /// 獲取OpenID
    /// </summary>
    public static string GetOpenID(string redirect_url, string code)
    {
      string AppID = WXModel.AppID;
      string AppSecret = WXModel.AppSecret;
      string openid = "";
      openid = WXApi.GetOpenID(AppID, redirect_url, code, AppSecret);
      return openid;
    }
    #endregion 

類WXApi中加入GetOpenID方法 

 #region 獲取OpenId
    /// <summary>
    /// 獲取OpenId
    /// </summary>
    public static string GetOpenID(string appid, string redirect_url, string code, string screct)
    {
      string strJson = "";
      if (string.IsNullOrEmpty(code))
      {
        redirect_url = HttpUtility.UrlEncode(redirect_url);
        HttpContext.Current.Response.Redirect(string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state={2}#wechat_redirect",
          appid, redirect_url, new Random().Next(1000, 200000).ToString()));
      }
      else
      {
        strJson = HttpRequestUtil.RequestUrl(string.Format("https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code",
        appid, screct, code));
      }
      return Tools.GetJsonValue(strJson, "openid");
    }
    #endregion
public static class WXModel
  {
    public static string access_token;
    public static string AppID;
    public static string AppSecret;
  } 
 /// <summary>
  /// 工具類
  /// </summary>
  public class Tools
  {
    #region 獲取Json字符串某節(jié)點(diǎn)的值
    /// <summary>
    /// 獲取Json字符串某節(jié)點(diǎn)的值
    /// </summary>
    public static string GetJsonValue(string jsonStr, string key)
    {
      string result = string.Empty;
      if (!string.IsNullOrEmpty(jsonStr))
      {
        key = "\"" + key.Trim('"') + "\"";
        int index = jsonStr.IndexOf(key) + key.Length + 1;
        if (index > key.Length + 1)
        {
          //先截逗號(hào),若是最后一個(gè),截“}”號(hào),取最小值
          int end = jsonStr.IndexOf(',', index);
          if (end == -1)
          {
            end = jsonStr.IndexOf('}', index);
          }

          result = jsonStr.Substring(index, end - index);
          result = result.Trim(new char[] { '"', ' ', '\'' }); //過(guò)濾引號(hào)或空格
        }
      }
      return result;
    }
    #endregion

  }
public class HttpRequestUtil
  {
    #region 請(qǐng)求Url,不發(fā)送數(shù)據(jù)
    /// <summary>
    /// 請(qǐng)求Url,不發(fā)送數(shù)據(jù)
    /// </summary>
    public static string RequestUrl(string url)
    {
      return RequestUrl(url, "POST");
    }
    #endregion

    #region 請(qǐng)求Url,不發(fā)送數(shù)據(jù)
    /// <summary>
    /// 請(qǐng)求Url,不發(fā)送數(shù)據(jù)
    /// </summary>
    public static string RequestUrl(string url, string method)
    {
      // 設(shè)置參數(shù)
      HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
      CookieContainer cookieContainer = new CookieContainer();
      request.CookieContainer = cookieContainer;
      request.AllowAutoRedirect = true;
      request.Method = method;
      request.ContentType = "text/html";
      request.Headers.Add("charset", "utf-8");

      //發(fā)送請(qǐng)求并獲取相應(yīng)回應(yīng)數(shù)據(jù)
      HttpWebResponse response = request.GetResponse() as HttpWebResponse;
      //直到request.GetResponse()程序才開(kāi)始向目標(biāo)網(wǎng)頁(yè)發(fā)送Post請(qǐng)求
      Stream responseStream = response.GetResponseStream();
      StreamReader sr = new StreamReader(responseStream, Encoding.Default);
      //返回結(jié)果網(wǎng)頁(yè)(html)代碼
      string content = sr.ReadToEnd();
      return content;
    }
    #endregion
  } 

注意:需要在微信公眾平臺(tái)中設(shè)置授權(quán)回調(diào)域

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • ASP.NET MVC3 SEO優(yōu)化:利用Routing特性提高站點(diǎn)權(quán)重

    ASP.NET MVC3 SEO優(yōu)化:利用Routing特性提高站點(diǎn)權(quán)重

    這篇文章主要介紹了ASP.NET MVC3 SEO優(yōu)化:利用Routing特性消除多個(gè)路徑指向同一個(gè)Action,從而提高站點(diǎn)權(quán)重,需要的朋友可以參考下。
    2016-06-06
  • .NET 內(nèi)存管理兩種有效的資源釋放方式詳解

    .NET 內(nèi)存管理兩種有效的資源釋放方式詳解

    在.NET中,內(nèi)存管理主要依賴?yán)厥眨℅C),但對(duì)于非托管資源如文件句柄、數(shù)據(jù)庫(kù)連接等,需要更細(xì)粒度的控制,介紹了使用using語(yǔ)句和顯式調(diào)用Dispose方法兩種方式來(lái)管理這些資源,避免內(nèi)存泄漏,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • ASP.NET驗(yàn)證碼(3種)

    ASP.NET驗(yàn)證碼(3種)

    這篇文章主要對(duì)ASP.NET實(shí)現(xiàn)三種驗(yàn)證碼的簡(jiǎn)單實(shí)例進(jìn)行了介紹,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-08-08
  • 解析ABP框架中的數(shù)據(jù)傳輸對(duì)象與應(yīng)用服務(wù)

    解析ABP框架中的數(shù)據(jù)傳輸對(duì)象與應(yīng)用服務(wù)

    ABP框架是基于ASP.NET的Web開(kāi)發(fā)框架,在ABP中應(yīng)用服務(wù)將領(lǐng)域邏輯暴露給展現(xiàn)層,展現(xiàn)層通過(guò)傳入數(shù)據(jù)傳輸對(duì)象參數(shù)來(lái)調(diào)用應(yīng)用服務(wù),而這里我們就來(lái)解析ABP框架中的數(shù)據(jù)傳輸對(duì)象與應(yīng)用服務(wù)
    2016-06-06
  • .net自定義事件示例分享

    .net自定義事件示例分享

    這篇文章主要介紹了.net自定義事件示例,代碼實(shí)現(xiàn)了熱水器加熱,報(bào)警器監(jiān)控,當(dāng)熱水溫度達(dá)到80度的時(shí)候報(bào)警器報(bào)警這樣一個(gè)簡(jiǎn)單的事件處理程序,需要的朋友可以參考下
    2014-03-03
  • Asp.Net類庫(kù)中發(fā)送電子郵件的代碼

    Asp.Net類庫(kù)中發(fā)送電子郵件的代碼

    發(fā)送電子郵件是許多需要用戶注冊(cè)的網(wǎng)站的通用功能,通過(guò)正則表達(dá)式我們可以過(guò)濾掉不符合電子郵件格式的輸入,但是仍沒(méi)有辦法確保用戶填寫的電子郵件地址一定是他本人真實(shí)有效的電子郵件地址
    2008-09-09
  • ASP.NET防止SQL注入的方法示例

    ASP.NET防止SQL注入的方法示例

    這篇文章主要介紹了ASP.NET防止SQL注入的方法,結(jié)合具體實(shí)例形式分析了asp.net基于字符串過(guò)濾實(shí)現(xiàn)防止SQL注入的相關(guān)操作技巧,需要的朋友可以參考下
    2017-03-03
  • 在ASP.NET中實(shí)現(xiàn)彈出日歷的具體方法

    在ASP.NET中實(shí)現(xiàn)彈出日歷的具體方法

    這篇文章介紹了ASP.NET彈出日歷功能的實(shí)現(xiàn)方法,有需要的朋友可以參考一下
    2013-07-07
  • ASP.NET MVC4異步聊天室的示例代碼

    ASP.NET MVC4異步聊天室的示例代碼

    這篇文章主要介紹了ASP.NET MVC4異步聊天室的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • ASP.NET Core擴(kuò)展庫(kù)之Http日志的使用詳解

    ASP.NET Core擴(kuò)展庫(kù)之Http日志的使用詳解

    這篇文章主要介紹了ASP.NET Core擴(kuò)展庫(kù)之Http日志的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用.net技術(shù),感興趣的朋友可以了解下
    2021-04-04

最新評(píng)論

乌兰县| 安福县| 荥经县| 巩义市| 额济纳旗| 石林| 咸丰县| 昌黎县| 海晏县| 淄博市| 西吉县| 柳州市| 文化| 垫江县| 芦山县| 波密县| 桓台县| 左云县| 三明市| 沂源县| 依安县| 天台县| 政和县| 晋江市| 五大连池市| 富锦市| 湘乡市| 腾冲县| 邵阳县| 寿宁县| 岗巴县| 沁水县| 云阳县| 乌鲁木齐县| 二手房| 图片| 东明县| 双鸭山市| 陆川县| 多伦县| 天峻县|