.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 相关文章推荐
jquery uaMatch源代码
Feb 14 Javascript
window.addEventListener来解决让一个js事件执行多个函数
Dec 26 Javascript
jQuery遍历json中多个map的方法
Feb 12 Javascript
JS实现文字放大效果的方法
Mar 03 Javascript
JS组件中bootstrap multiselect两大组件较量
Jan 26 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
Nov 30 Javascript
Node.js连接postgreSQL并进行数据操作
Dec 18 Javascript
jquery实现超简单的瀑布流布局【推荐】
Mar 08 Javascript
移动端web滚动分页的实现方法
May 05 Javascript
小程序红包雨的实现示例
Feb 19 Javascript
Openlayers实现地图全屏显示
Sep 28 Javascript
JavaScript函数柯里化
Nov 07 Javascript
初识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
浅谈电磁辐射对健康的影响
2021/03/01 无线电
php读取csv文件并输出的方法
2015/03/14 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
Yii2框架数据库简单的增删改查语法小结
2016/08/31 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
2016/12/14 PHP
5款Javascript颜色选择器
2009/10/25 Javascript
js下用层来实现select的title提示属性
2010/02/23 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
JavaScript的null和undefined区别示例介绍
2014/09/15 Javascript
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
javascript HTML5 Canvas实现圆盘抽奖功能
2016/04/11 Javascript
Vue请求JSON Server服务器数据的实现方法
2018/11/02 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
a标签调用js的方法总结
2019/09/05 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
Python程序退出方式小结
2017/12/09 Python
PyQt5每天必学之组合框
2018/04/20 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
html5 div布局与table布局详解
2016/11/16 HTML / CSS
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
工程管理专业毕业生自荐信
2014/01/24 职场文书
服务员自我评价
2014/01/25 职场文书
《望洞庭》教学反思
2014/02/16 职场文书
体育教学随笔感言
2014/02/24 职场文书
《广玉兰》教学反思
2014/04/14 职场文书
班级活动总结格式
2014/08/30 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
新年祝酒词大全
2015/08/11 职场文书
小学科学课教学反思
2016/02/23 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python