.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 相关文章推荐
根据分辨率不同,调用不同的css文件
Aug 25 Javascript
javascript中Date对象的getDay方法使用指南
Dec 22 Javascript
javascript与Python快速排序实例对比
Aug 10 Javascript
JavaScript编程中实现对象封装特性的实例讲解
Jun 24 Javascript
jQuery实现将div中滚动条滚动到指定位置的方法
Aug 10 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
Oct 26 Javascript
微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解
Dec 08 Javascript
js实现前面自动补全位数的方法
Oct 10 Javascript
Echarts动态加载多条折线图的实现代码
May 24 Javascript
JavaScript图像放大镜效果实现方法详解
Jun 28 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
Aug 04 Javascript
详解webpack的clean-webpack-plugin插件报错
Oct 16 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
php抓取页面的几种方法详解
2013/06/17 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
Laravel5.1自定义500错误页面示例
2016/10/09 PHP
PHP对象实例化单例方法
2017/01/19 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
xml 与javascript结合的问题解决方法
2007/03/24 Javascript
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
使用控制台破解百小度一个月只准改一次名字
2015/08/13 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
jQuery的中 is(':visible') 解析及用法(必看)
2017/02/12 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
[06:48]DOTA2-DPC中国联赛2月26日Recap集锦
2021/03/11 DOTA
python实现百度语音识别api
2018/04/10 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
《与象共舞》教学反思
2014/02/24 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
美术专业自荐信
2014/07/07 职场文书
庆元旦活动总结
2014/07/09 职场文书
办公室卫生管理制度
2015/08/04 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
聘任书的格式及模板
2019/10/28 职场文书