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

MVC微信網頁授權獲取用戶OpenId

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

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

注意框架為MVC 開發(fā)微信公眾平臺。場景為,在模板頁中獲取用戶openid,想要進行驗證的頁面,集成模板頁就可以了。 

在_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é)點的值
    /// <summary>
    /// 獲取Json字符串某節(jié)點的值
    /// </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)
        {
          //先截逗號,若是最后一個,截“}”號,取最小值
          int end = jsonStr.IndexOf(',', index);
          if (end == -1)
          {
            end = jsonStr.IndexOf('}', index);
          }

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

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

    #region 請求Url,不發(fā)送數據
    /// <summary>
    /// 請求Url,不發(fā)送數據
    /// </summary>
    public static string RequestUrl(string url, string method)
    {
      // 設置參數
      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ā)送請求并獲取相應回應數據
      HttpWebResponse response = request.GetResponse() as HttpWebResponse;
      //直到request.GetResponse()程序才開始向目標網頁發(fā)送Post請求
      Stream responseStream = response.GetResponseStream();
      StreamReader sr = new StreamReader(responseStream, Encoding.Default);
      //返回結果網頁(html)代碼
      string content = sr.ReadToEnd();
      return content;
    }
    #endregion
  } 

注意:需要在微信公眾平臺中設置授權回調域

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

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

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

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

    .NET 內存管理兩種有效的資源釋放方式詳解

    在.NET中,內存管理主要依賴垃圾回收(GC),但對于非托管資源如文件句柄、數據庫連接等,需要更細粒度的控制,介紹了使用using語句和顯式調用Dispose方法兩種方式來管理這些資源,避免內存泄漏,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • ASP.NET驗證碼(3種)

    ASP.NET驗證碼(3種)

    這篇文章主要對ASP.NET實現三種驗證碼的簡單實例進行了介紹,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-08-08
  • 解析ABP框架中的數據傳輸對象與應用服務

    解析ABP框架中的數據傳輸對象與應用服務

    ABP框架是基于ASP.NET的Web開發(fā)框架,在ABP中應用服務將領域邏輯暴露給展現層,展現層通過傳入數據傳輸對象參數來調用應用服務,而這里我們就來解析ABP框架中的數據傳輸對象與應用服務
    2016-06-06
  • .net自定義事件示例分享

    .net自定義事件示例分享

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

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

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

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

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

    在ASP.NET中實現彈出日歷的具體方法

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

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

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

    ASP.NET Core擴展庫之Http日志的使用詳解

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

最新評論

正镶白旗| 郧西县| 涞源县| 和林格尔县| 诸城市| 黄梅县| 大悟县| 福安市| 乌兰浩特市| 都江堰市| 那坡县| 桐梓县| 绥德县| 沾化县| 木里| 凉城县| 肃宁县| 娄底市| 大名县| 合水县| 华安县| 大田县| 泸水县| 健康| 汽车| 邵阳市| 曲松县| 临湘市| 宝鸡市| 辽源市| 奇台县| 镇平县| 龙岩市| 丰镇市| 仪陇县| 财经| 崇州市| 湄潭县| 威信县| 井研县| 汉寿县|