首页 > 代码库 > 微信公众平台(2)-自定义菜单接口

微信公众平台(2)-自定义菜单接口

    前几日发布了nodejs搭建微信公众平台后台,今天介绍下公众平台的自定义菜单接口。

    首先自定义菜单接口在刚申请的订阅号中是没有权限设置的,需要认证开通,而服务号在申请成功之后就可以自定义菜单了。

    首先我们来看一下菜单的数据格式:

var meno =  {
    "button":[
        {
            "type":"click",
            "name":"music",
            "key":"V1001_TODAY_MUSIC"
        },
        {
            "type":"click",
            "name":"singer",
            "key":"V1001_TODAY_SINGER"
        },
        {
            "name":"menu",
            "sub_button":[
                {
                    "type":"view",
                    "name":"search",
                    "url":"http://www.soso.com/"
                },
                {
                    "type":"view",
                    "name":"upload",
                    "url":"http://121.40.122.155/upload/Upload.html"
                },
                {
                    "type":"click",
                    "name":"up",
                    "key":"V1001_GOOD"
                }]
        }]
}

    我们可以看到,这是一个json格式的菜单数据,并且是整个菜单的,所以微信公众平台的菜单更新要更新就必须是整个菜单更新,其实菜单本身也是有限制的:

    1、目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。

    2、一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。

    3、请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。 


    然后我们来看更新自定义菜单的接口:

var params = JSON.stringify(meno);
    var options = {};
    var ACCESS_TOKEN = config.huaheng.access_token;
    var url = ‘https://api.weixin.qq.com/cgi-bin/menu/create?access_token=‘+ACCESS_TOKEN;
    console.log(url);
    console.log(params)
    needle.post(url, params, options, function(err, resp) {
        console.log("setmenu");
        console.log(resp.body);
        // you can pass params as a string or as an object.
    });

    其实,我们可以看出来就是个post接口,有人要问了ACCESS_TOKEN参数是个什么呢?

    ACCESS_TOKEN是需要从微信后台那边获取的,相当于是一个可以更新自定义菜单的钥匙,下面我们来看一下这个ACCESS_TOKEN到底是怎么获取的:

var AppId = config.huaheng.AppId;
    var AppSecret = config.huaheng.AppSecret;
    var url = ‘https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=‘
        +AppId+‘&secret=‘+AppSecret;
    needle.get(url, function(err, resp) {
        if(config.model == "test"){

        }else{
            config.huaheng.access_token = resp.body.access_token;
            console.log(config)
        }
    });

    大家可以看见获取ACCESS_TOKEN的接口是个get接口,而参数AppId和AppSecret都是在申请好公众号以后会显示在公众号管理后台的。


    微信5.4版本推出以后,除了点击发送信息和跳转链接两种形式,又新增了六种形式的自定义菜单,大家有兴趣的可以自己研究。

    现在的微信公众平台的官方后台已经可以配置自定义菜单了,不过仅限于发送信息和跳转链接两种形式。

本文出自 “雪飘七月” 博客,请务必保留此出处http://xuepiaoqiyue.blog.51cto.com/4391594/1562260

微信公众平台(2)-自定义菜单接口