首頁 > web前端 > js教程 > 主體

.NET微信公眾號開發之建立自訂選單_javascript技巧

WBOY
發布: 2016-05-16 15:50:00
原創
1477 人瀏覽過

一.前言

開發之前,我們需要閱讀官方的介面說明文檔,不得不吐槽一下,微信的這個官方文檔真的很爛,但是,為了開發我們需要的功能,我們也不得不去看這些文檔.

介面文件位址:http://mp.weixin.qq.com/wiki/13/43de8269be54a0a6f64413e4dfa94f39.html

看了這些個文檔,基本上意思明白了,就是我們把我們要創建的菜單創建好,post到微信的伺服器上面,微信伺服器然後給我們一些狀態碼,從而判斷我們的菜單是否創建成功,只是在發送json資料以前我們要做一些身份驗證。

二.準備工作

先把我們要建立的選單寫在一個txt文字中:

 {
   "button":[
    {
      "type":"view",
      "name":"付停车费",
      "url":"http://www.baidu.com"
  
    },{
      "name":"个人中心",
      "sub_button":[
      {  
        "type":"view",
        "name":"个人信息",
        "url":"http://www.baidu.com"
      },
      {
        "type":"view",
        "name":"订单查询",
        "url":"http://www.baidu.com"
      },
      {
        "type":"view",
        "name":"使用帮助",
        "url":"http://www.baidu.com"
      },
      {
        "type":"view",
        "name":"下载APP",
        "url":"http://www.baidu.com"
      }]
    }]
 }

登入後複製

三.開始編碼

  首先我們建立一個一般處理程序createMenu.ashx.

複製程式碼 程式碼如下:

        public string  access_token { get; set; }
        protected void Page_Load(object sender, EventArgs e)
        {
            FileStream fs1 = new FileStream(Server.MapPath(".") "\menu.txt", FileMode.Open);
\menu.txt
", FileMode.Open);
\menu.txt
", FileMode.Open);
            StreamReader sr = new StreamReader(fs1, Encoding.GetEncoding("UTF-8"));             string menu = sr.ReadToEnd();             sr.Close();
            fs1.Close();
            var str = GetPage("
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wxd811f5114e3556f36811f5114e356 24f1", "");             JObject jo = JObject.Parse(str);
            access_token = jo["access_token"].ToString();
            GetPage("
https://api.weixin.qq.com/cgi-bin/menu/create?access_token

=" access_token "", menu);=" access_token "", menu);<         }

  這裡要注意的是appid,secret這些參數需要換成我們自己的,這些參數我們可以放在設定檔中。也可以單獨的放在一個幫助類別裡面。

     同時在創建選單的時候我們需要帶上我的access_token這個令牌來驗證我們的身份,那麼我們首先要做的就是獲取我們的這個令牌,那個這個令牌要如何獲取了,我們可以透過一個介面獲取,只需要傳遞我們的appid和secret這個兩個參數
複製程式碼


程式碼如下:

{"access_token":"jVLAT9Rp9dNgxI4pb4RWlSx_9HJLXICmk_uWDlRtAug8wcaWhZZ10eqZCYRZrEwCIJf1-vBhS9YEX00Dj7q__lJCyTI20TruxOd."

  上面的GetPage方法的回傳值。這樣我們就可以獲得我們的令牌了。

      最後一步:帶上我們的令牌,post我們的json選單資料就可以建立選單了。


      當你看到以下程式碼:

{"errcode":0,"errmsg":"ok"}

  說明你的選單創建成功了。

四:GetPage
    public string GetPage(string posturl, string postData)
    {
      Stream outstream = null;
      Stream instream = null;
      StreamReader sr = null;
      HttpWebResponse response = null;
      HttpWebRequest request = null;
      Encoding encoding = Encoding.UTF8;
      byte[] data = encoding.GetBytes(postData);
      // 准备请求...
      try
      {
        // 设置参数
        request = WebRequest.Create(posturl) as HttpWebRequest;
        CookieContainer cookieContainer = new CookieContainer();
        request.CookieContainer = cookieContainer;
        request.AllowAutoRedirect = true;
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = data.Length;
        outstream = request.GetRequestStream();
        outstream.Write(data, 0, data.Length);
        outstream.Close();
        //发送请求并获取相应回应数据
        response = request.GetResponse() as HttpWebResponse;
        //直到request.GetResponse()程序才开始向目标网页发送Post请求
        instream = response.GetResponseStream();
        sr = new StreamReader(instream, encoding);
        //返回结果网页(html)代码
        string content = sr.ReadToEnd();
        string err = string.Empty;
        Response.Write(content);
        return content;
      }
      catch (Exception ex)
      {
        string err = ex.Message;
        return string.Empty;
      }
    }

登入後複製
    代碼如下:

以上所述就是本文的全部內容了,希望大家能夠喜歡
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!