用微发网定义微信自定义菜单返回值“invalid button key size”,是设置错误造成的,解决方法如下:
1、首先使用百度/360搜索:微信公众平台,点击带官网的网页。
2、进入后,在平台左上角栏目上有个功能栏目。
3、在功能栏目下点击自定义菜单,进入自定义菜单后,在菜单下面有个“+”号。
4、这里是可以添加素材的地方,如下图。
5、菜单名称是可以更换的,添加完成后,选择保存并发布就完成了。
在微信客户端创建自定义菜单是通过http的POST请求发送一个JSON格式的特定结构体来实现的,返回“invalid button key size”通常可能是以下原因:
不符合JSON数据格式;
不符合结构体参数限制;
在.net平台下,有可能用指定编码的StreamWriter写入流和用指定编码转换为字节数组再写入流的过程存在不兼容情况。
对于前两种原因,请参考以下示例及参数说明,或参考微信公众平台开发者文档重新构造数据:
{ "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" },
{ "type":"click", "name":"歌手简介", "key":"V1001_TODAY_SINGER" }, { "name":"菜单",
"sub_button":[ { "type":"click", "name":"hello word", "key":"V1001_HELLO_WORLD"
}, { "type":"click", "name":"赞一下我们", "key":"V1001_GOOD" }] }] }
参数说明:button是按钮数组,按钮个数应为1~3个;type是按钮类型,目前有click,view等类型;name是按钮描述,即按钮名字,不超过16个字节,子菜单name不超过40个字节;sub_button是子按钮数组,按钮个数应为1~5个;菜单KEY值,用于消息接口推送,不超过128字节。
对于第3种原因,请尝试为StreamWriter设置不同的Encoding参数,即尝试不同的编码。
参考资料:
微信公众平台开发者文档(http://mp.weixin.qq.com/wiki/6/95cade7d98b6c1e1040cde5d9a2f9c26.html)