.NET微信公众号开发之创建自定义菜单


Posted in Javascript onJuly 16, 2015

一.前言

开发之前,我们需要阅读官方的接口说明文档,不得不吐槽一下,微信的这个官方文档真的很烂,但是,为了开发我们需要的功能,我们也不得不去看这些文档.

接口文档地址: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);

            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=wxd811f5114e3e56f3&secret=76eb33f66129692da16d148cb3c024f1", "");

            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);

        }

这里需要注意的是appid,secret这些参数需要换成我们自己的,这些参数我们可以放在配置文件中。也可以单独的放在一个帮助类里面。

     同时在创建菜单的时候我们需要带上我的access_token这个令牌来验证我们的身份,那么我们首先要做的就是获取我们的这个令牌,那个这个令牌要如何获取了,我们可以通过一个接口获取,只需要传递我们的appid和secret这个两个参数

{"access_token":"jVLAT9Rp9dNgxI4pb4RWlSx_9HJLXICmk_uWDlRtAug8wcaWhZZ10eqZCYRZrEwCIJf1-vBhS9YEX00Dj7q__lJCyTIWOxTruOd25opkf-0","expires_in":7200}

上面的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;
      }
    }

以上所述就是本文的全部内容了,希望大家能够喜欢

Javascript 相关文章推荐
限制复选框的最大可选数
Jul 01 Javascript
ExtJs使用IFrame的实现代码
Mar 24 Javascript
Jquery中显示隐藏的实现代码分析
Jul 26 Javascript
JS获取页面窗口大小的代码解读
Dec 01 Javascript
JavaScript事件委托实例分析
May 26 Javascript
理解javascript函数式编程中的闭包(closure)
Mar 08 Javascript
微信小程序 选项卡的简单实例
May 24 Javascript
Node.js+Express+MySql实现用户登录注册功能
Jul 10 Javascript
node前端模板引擎Jade之标签的基本写法
May 11 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
Jun 07 Javascript
如何使用JS console.log()技巧提高工作效率
Oct 14 Javascript
Vue3.0 手写放大镜效果
Jul 25 Vue.js
初识Javascript小结
Jul 16 #Javascript
浅谈javascript中的DOM方法
Jul 16 #Javascript
详细分析JavaScript函数定义
Jul 16 #Javascript
jQuery时间轴插件使用详解
Jul 16 #Javascript
jQuery实现定时读取分析xml文件的方法
Jul 16 #Javascript
Javascript函数的参数
Jul 16 #Javascript
Javascript简单改变表单元素背景的方法
Jul 15 #Javascript
You might like
linux下 C语言对 php 扩展
2008/12/14 PHP
用mysql触发器自动更新memcache的实现代码
2009/10/11 PHP
PHP XML操作类DOMDocument
2009/12/16 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
cnblogs csdn 代码运行框实现代码
2009/11/02 Javascript
js判断选择的时间是否大于今天的代码
2013/08/20 Javascript
一段非常简单的js判断浏览器的内核
2014/08/17 Javascript
javascript与Python快速排序实例对比
2015/08/10 Javascript
js实现网页图片延时加载 提升网页打开速度
2016/01/26 Javascript
BootStrap Progressbar 实现大文件上传的进度条的实例代码
2016/06/27 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
小议Python中自定义函数的可变参数的使用及注意点
2016/06/21 Python
Python实现井字棋小游戏
2020/03/09 Python
Python figure参数及subplot子图绘制代码
2020/04/18 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
python和C++共享内存传输图像的示例
2020/10/27 Python
python 录制系统声音的示例
2020/12/21 Python
Python接口自动化系列之unittest结合ddt的使用教程详解
2021/02/23 Python
美国创意礼品网站:UncommonGoods
2017/02/03 全球购物
Camper鞋西班牙官方网上商店:西班牙马略卡岛的鞋类品牌
2019/03/14 全球购物
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
可爱的童装和鞋子:Fabkids
2019/08/16 全球购物
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
2014年端午节演讲稿范文
2014/05/23 职场文书
应聘护士求职信
2014/07/21 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
《游戏公平》教学反思
2016/02/20 职场文书
调解协议书范本
2016/03/21 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
如何用H5实现好玩的2048小游戏
2022/07/23 HTML / CSS