前几日发布了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
原文地址:http://xuepiaoqiyue.blog.51cto.com/4391594/1562260