创建自定义菜单首先要满足公众号获得创建自定义菜单的权限才可以。微信公众号开发本质还是提交一组菜单数据给微信公众号服务器,服务器拿到数据后保存到他们的服务器上,我们的公众号客户端进入公众号,公众号就会自动拉取微信公众号服务器上的菜单数据并解析成相应的菜单,基本原理和思路非常简单
一、先看我们的Controller,这里是需要向微信公众号服务器提交我们的数据,这里我们用了一个MenuController中的createMenu方法创建我们的自定义菜单,当然除了创建自定义菜单还可以查询自定义菜单等(详细请参考微信公众号开发文档)
这个方法啥也没做,就是调用了menuUtil中的一个方法
二、自定义菜单MenuUtil类
这个类主要是做了两个操作,一个是组装我们的菜单结构,一个是调用接口请求微信公众号服务器
三、跟之前一样,在请求接口之前我们需要获得我们的token,这个接口需要附带token值才能有效
请求创建自定义菜单的接口是https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
,ACCESS_TOKEN替换成你自己获得的token即可
我们这里用到了redis用来缓存token,因为微信公众号的token每天有访问次数限制和失效期,我们把把token获取到之后缓存到
redis中(设置一个接近失效期的时间),如果获取不到就重新请求获取access_token接口重新获取
四、在swagger中请求我们的创建自定义菜单请求,即可生成我们自己的自定义菜单,上面是我的代码,生成的菜单截图如下:
说明:自定义菜单如果是多次请求生成新的菜单,新的菜单需要用户重新退出公众号再次进入后才能自动刷新,如果还是没有刷新可以取消关注公众号重新关注该公众号。
原文:https://www.cnblogs.com/xulijun137/p/12213461.html