C#微信開發(fā)之自定義菜單管理
自定義菜單管理
①接口說明
微信服務號聊天窗口下面的菜單項(有的公眾號有啟用有的則沒有),這個可以在編輯模式簡單配置,也可以在開發(fā)模式代碼配置。微信公眾平臺開發(fā)者文檔:微信公眾號開發(fā)平臺創(chuàng)建自定義菜單,可以看到創(chuàng)建菜單的一些注意事項,下面的使用網(wǎng)頁調試工具調試該接口,只是調試接口是否可以正常調用,并不是直接創(chuàng)建菜單,根據(jù)微信自定義菜單管理文檔菜單事件可分為兩種:
click: 用戶點擊click類型按鈕后,微信服務器會通過消息接口推送消息類型為event 的結構給開發(fā)者(參考消息接口指南),并且?guī)习粹o中開發(fā)者填寫的key值,開發(fā)者可以通過自定義的key值與用戶進行交互。
view: 用戶點擊view類型按鈕后,微信客戶端將會打開開發(fā)者在按鈕中填寫的url值 (即網(wǎng)頁鏈接),達到打開網(wǎng)頁的目的,建議與網(wǎng)頁授權獲取用戶基本信息接口結合,獲得用戶的登入個人信息。
設置菜單JSON格式(可根據(jù)需要進行修改):
{
  "button":[
  { 
   "type":"click",
   "name":"今日歌曲",
   "key":"V1001_TODAY_MUSIC"
  },
  {
   "name":"菜單",
   "sub_button":[
   { 
    "type":"view",
    "name":"搜索",
    "url":"http://www.soso.com/"
   },
   {
    "type":"view",
    "name":"視頻",
    "url":"http://v.qq.com/"
   },
   {
    "type":"click",
    "name":"贊一下我們",
    "key":"V1001_GOOD"
   }]
  }]
 }
配置菜單的注意點:
1、自定義菜單最多包括3個一級菜單,每個一級菜單最多包含5個二級菜單。
2、一級菜單最多4個漢字,二級菜單最多7個漢字,多出來的部分將會以“...”代替。
3、創(chuàng)建自定義菜單后,由于微信客戶端緩存,需要24小時微信客戶端才會展現(xiàn)出來。測試時可以嘗試取消關注公眾賬號后再次關注,則可以看到創(chuàng)建后的效果。
接口參數(shù)配置:
②請求接口:
接口調用請求說明:
http請求方式:POST(請使用https協(xié)議)
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
POST請求接口調用接口憑據(jù)ACCESS_TOKEN的獲取方式可參見文檔(獲取ACCESS_TOKEN文檔)使用POST方式帶上ACCESS_TOKEN以及菜單JSON請求接口,具體實現(xiàn)代碼如下:
/// <summary>
/// 創(chuàng)建菜單事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void createMenu_Click(object sender, EventArgs e)
{
   FileStream fs1 = new FileStream(Server.MapPath("~/") + "\\menuInfo.txt", FileMode.Open);
   StreamReader sr = new StreamReader(fs1, Encoding.GetEncoding("GBK"));
   string menu = sr.ReadToEnd();
   sr.Close();
   fs1.Close();
   CreateMenu("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN", menu);
}
/// <summary>
/// 創(chuàng)建公眾號菜單
/// </summary>
/// <param name="posturl">URL</param>
/// <param name="postData">菜單JSON數(shù)據(jù)</param>
/// <returns></returns>
public void CreateMenu(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);
   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;
  instream = response.GetResponseStream();
  sr = new StreamReader(instream, encoding);
  string content = sr.ReadToEnd();
  Context.Response.Write(content);
}
接口返回結果:
正確時返回的JSON數(shù)據(jù)包格式如下:
{"errcode":0,"errmsg":"ok"}
錯誤時的返回JSON數(shù)據(jù)包如下(示例為無效菜單名長度):
{"errcode":40018,"errmsg":"invalid button name size"}
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持我們!
上一篇:C#中加載dll并調用其函數(shù)的實現(xiàn)方法
欄 目:C#教程
下一篇:C#異步編程詳解
本文標題:C#微信開發(fā)之自定義菜單管理
本文地址:http://www.jygsgssxh.com/a1/C_jiaocheng/5938.html
您可能感興趣的文章
- 01-10C#通過反射獲取當前工程中所有窗體并打開的方法
 - 01-10關于ASP網(wǎng)頁無法打開的解決方案
 - 01-10C#實現(xiàn)Winform中打開網(wǎng)頁頁面的方法
 - 01-10C#實現(xiàn)打開畫圖的同時載入圖片、最大化顯示畫圖窗體的方法
 - 01-10C#使用windows服務開啟應用程序的方法
 - 01-10C#實現(xiàn)將應用程序設置為開機啟動的方法
 - 01-10微信開放平臺之網(wǎng)站授權微信登錄功能
 - 01-10C#調用WebService實例開發(fā)
 - 01-10C#編程自學之開篇介紹
 - 01-10實現(xiàn)ASP.NET無刷新下載并提示下載完成的開發(fā)思路
 


閱讀排行
本欄相關
- 01-10C#通過反射獲取當前工程中所有窗體并
 - 01-10關于ASP網(wǎng)頁無法打開的解決方案
 - 01-10WinForm限制窗體不能移到屏幕外的方法
 - 01-10WinForm繪制圓角的方法
 - 01-10C#實現(xiàn)txt定位指定行完整實例
 - 01-10WinForm實現(xiàn)仿視頻播放器左下角滾動新
 - 01-10C#停止線程的方法
 - 01-10C#實現(xiàn)清空回收站的方法
 - 01-10C#通過重寫Panel改變邊框顏色與寬度的
 - 01-10C#實現(xiàn)讀取注冊表監(jiān)控當前操作系統(tǒng)已
 
隨機閱讀
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
 - 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
 - 04-02jquery與jsp,用jquery
 - 01-10delphi制作wav文件的方法
 - 01-10C#中split用法實例總結
 - 01-10使用C語言求解撲克牌的順子及n個骰子
 - 08-05DEDE織夢data目錄下的sessions文件夾有什
 - 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
 - 01-11ajax實現(xiàn)頁面的局部加載
 - 08-05織夢dedecms什么時候用欄目交叉功能?
 


