• 简书网微信公众号二维码
您当前的位置: 首页 > 知识百科 > 分析微信创建自定义菜单发布失败

分析微信创建自定义菜单发布失败

时间:2023-07-01 14:05 阅读数:122 人阅读 分类:知识百科

  微信创建自定义菜单发布为什么会失败?有很多人会有这样的疑问,我这样努力的创建微信自定义菜单这是为什么呢?其实不是这样子的,小编也是找了很久的答案,今天我们一起来分析微信创建自定义菜单发布失败,希望能找到想要的答案。

 一、微信创建自定义菜单 

创建菜单的接口地址是:api.weixin.qq/cgi-bin/menu/create?access_token=ACCESS_TOKEN。

  上面的地址中的ACCESS_TOKEN是通过凭证接口获取到的凭证。POST参数如下:

  {

  "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"

  }]

  }]

  }

  这个POST参数是一个JSON格式的字符串。JSON格式是HTTP网络传送中经常用到的字符串格式。这种格式和PHP的多维数组结合得非常好,JSON格式中中括号包含的字符串对应PHP的数值数组,而大括号内的字符串对应PHP的关联数组。PHP提供了两个内建的函数来处理JSON格式的字符串:json_encode把PHP数组转换成JSON格式的字符串;json_decode把JSON格式的字符串转换成PHP的多维数组。上面的JSON格式的字符串用json_decode函数之后得到的PHP数组如下所示:

  array(

  "button" => array(

  array(

  "type" => "click",

  "name" => "今日歌曲",

  "key" => "V1001_TODAY_MUSIC"

  ),

  array(

  "type" => "click",

  "name" => "歌手简介",

  "key" => "V1001_TODAY_SINGER"

  ),

  array(

  "name" => "菜单",

  "sub_button" => array(

  array(

  "type" => "click",

  "name" => "hello word",

  "key" => "V1001_HELLO_WORLD"

  ),

  array(

  "type" => "click",

  "name" => "赞一下我们",

  "key" => "V1001_GOOD"

  )

  )

  )

  )

  );

  JSON格式的一般使用方法是:在发送请求前,用PHP数组表示需要发送的数据,然后使用json_encode把PHP数组编码成JSON字符串,接着把JSON字符串以HTTP的POST数据的形式发送出去。程序接收到返回的JSON数据段的时候,使用json_decode转换成PHP数组,然后再获取需要的数据。

  创建菜单请求的POST数据的各个参数的详细描述如表2-11所示。

  表2-11 创建菜单请求中各个参数的描述

  参  数 是否必须 说  明

  button 是 按钮数组,按钮个数应为1~3个

  sub_button 否 子按钮数组,按钮个数应为1~5个

  type 是 按钮类型,目前有click类型

  name 是 按钮描述,即按钮名字,不超过16字节,子菜单不超过40字节

  key 类型为click必须 按钮KEY值,用于消息接口(event类型)推送,不超过128字节

  请求成功后得到的返回字符串如下:

  {"errcode":0,"errmsg":"ok"}

  请求失败的话返回字符串如下:

  {"errcode":40018,"errmsg":"invalid button name size"}

  其中errcode表示错误码,errmsg表示对应的错误信息。所有错误码及其错误信息的描述如表2-12所示。

  表2-12 返回码说明

  返回码 说  明

  –1 系统繁忙

  0 请求成功

  40001 验证失败

  40002 不合法的凭证类型

  40003 不合法的OpenID

  40004 不合法的媒体文件类型

  40005 不合法的文件类型

  40006 不合法的文件大小

  40007 不合法的媒体文件ID

  40008 不合法的消息类型

  40009 不合法的图片文件大小

  40010 不合法的语音文件大小

  40011 不合法的视频文件大小

  40012 不合法的缩略图文件大小

  40013 不合法的APPID

  40014 不合法的access_token

  40015 不合法的菜单类型

  40016 不合法的按钮个数

  40017 不合法的按钮个数

  40018 不合法的按钮名字长度

  40019 不合法的按钮KEY长度

  40020 不合法的按钮URL长度

  40021 不合法的菜单版本号

  40022 不合法的子菜单级数

  40023 不合法的子菜单按钮个数

  40024 不合法的子菜单按钮类型

  40025 不合法的子菜单按钮名字长度

  40026 不合法的子菜单按钮KEY长度

  40027 不合法的子菜单按钮URL长度

  40028 不合法的自定义菜单使用用户

  41001 缺少access_token参数

  41002 缺少appid参数

  41003 缺少refresh_token参数

  41004 缺少secret参数

  41005 缺少多媒体文件数据

  41006 缺少media_id参数

  41007 缺少子菜单数据

  42001 access_token超时

  43001 需要GET请求

  43002 需要POST请求

  43003 需要HTTPS请求

  44001 多媒体文件为空

  44002 POST的数据包为空

  44003 图文消息内容为空

  45001 多媒体文件大小超过限制

  45002 消息内容超过限制

  45003 标题字段超过限制

  45004 描述字段超过限制

  45005 链接字段超过限制

  45006 图片链接字段超过限制

  45007 语音播放时间超过限制

  45008 图文消息超过限制

  45009 接口调用超过限制

  45010 创建菜单个数超过限制

  46001 不存在媒体数据

  46002 不存在的菜单版本

  46003 不存在的菜单数据

  47001 解析JSON/XML内容错误

  菜单请求创建成功后的自定义菜单如图2-7所示。

  


  菜单创建成功之后,当微信用户单击任意的一个菜单时,公众号后台会收到一个事件推送信息,消息的中的Event为“CLICK”,EventKey为菜单定义中对应的KEY值。在创建完自定义菜单之后,用户的微信并不能立即看到这些菜单,需要大概一天的时间之后才会展现出来。这是因为微信客户端的缓存过期时间是24小时。但是我们测试自己的程序不可能等这么长时间,一个好办法是先取消关注自己的公众账号,重启微信,然后重新关注。这样微信会立即重新拉一次最新的自定义菜单数据并做展现。

  所以说在创建完自定义菜单之后,用户的微信并不能立即看到这些菜单,需要大概一天的时间之后才会展现出来。是否找到你要的答案,如果想要更详细的微信自定义菜单的干货,请继续关注我们微素达官网,更多微信公众号素材等着你。

  推荐阅读:

  微信自定义菜单怎么发布?自定义菜单发布后手机端为什么不显示?

  微信公众号自定义菜单界面设置

  微信自定义菜单跳转网页链接如何设置?