文章目录

  • 简介
  • 代码
  • 其他的按钮类型

专栏目录请点击

简介

  1. 我们可以观看官网的介绍 点击
  2. 他的核心是,我们需要调微信的api来进行创建菜单,且菜单的参数,在官网的例子中已经给出
    1. 调用的接口为 https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
    2. 他是一个post请求,参数放在请求体中(body)
    3. 参数如下
 {"button":[{  "type":"click","name":"今日歌曲","key":"V1001_TODAY_MUSIC"},{"name":"菜单","sub_button":[{  "type":"view","name":"搜索","url":"http://www.soso.com/"},{"type":"miniprogram","name":"wxa","url":"http://mp.weixin.qq.com","appid":"wx286b93c14bbf93aa","pagepath":"pages/lunar/index"},{"type":"click","name":"赞一下我们","key":"V1001_GOOD"}]}]}

在这个参数中,他既有一级菜单,也有二级菜单,并且也有不同功能的按钮

代码

  1. 我们使用一个文件来保存我们定义的按钮,我们就把它叫做menu.js,把他放在wechat文件夹下
  2. 写上如下代码,我们先写一个简单的菜单
module.exports = {"button": [{"type": "click","name": "今日歌曲","key": "V1001_TODAY_MUSIC"},{"name": "菜单","sub_button": [{"type": "view","name": "搜索","url": "http://www.soso.com/"}]}]
}
  1. 我们可以观看我们调用的接口,我们会发现他需要ACCESS_TOKEN,所以我们把请求的放到了获取ACCESS_TOKENWeChat类中
  2. 我们在libs文件夹下新建一个api.js的文件,专门用来管理接口,并写上如下的内容
const prefix = "htps://api.weixin.qq.com/cgi-bin/"module.exports = {menu:{// 创建菜单 https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Creating_Custom-Defined_Menu.htmlcreate:prefix + "menu/create?",// 删除菜单 https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Deleting_Custom-Defined_Menu.htmldelete:prefix +'menu/delete?',// 获取菜单 https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Querying_Custom_Menus.htmlget:prefix +'menu/get?',// 个性化菜单相关}
}
  1. 他包括,创建菜单的方法,删除菜单的方法等,我们先写一个创建和删除的方法,并进行测试
class WeChat {// ...createMenu(body) {// 创建菜单return new Promise(async (resolve, reject) => {try {const { access_token } = await this.fetchAccessToken()const url = `${api.menu.create}access_token=${access_token}`const res = await rp({ method: "POST", json: true, url, body }) // 请求数据resolve(res)} catch (error) {reject(`createMenu方法处理问题${error}`);}})}deleteMenu() {return new Promise(async (resolve, reject) => {try {const { access_token } = await this.fetchAccessToken()const url = `${api.menu.delete}access_token=${access_token}`const res = rp({ method: "GET", json: true, url })resolve(res)} catch (error) {reject(`deleteMenu方法处理问题${error}`)}})}
}
  1. 上面的方法是菜单删除和创建的函数,我们测试一下这两个函数,于是我们在当前文件下写一个立即执行函数
// 进行测试
(async () => {const weChatApi = new WeChat()let data = await weChatApi.deleteMenu()console.log(data)data = await weChatApi.createMenu(menu)console.log(data)
})()
  1. 执行当前的js文件,如果没有报错,那么就是创建成功了,过两三分钟,可以看一下我们的公众号,发现底部已经有按钮了

其他的按钮类型

  • 通过微信官网,我们可以发现微信提供的按钮类型有多种 点击,一共有12种菜单
  • 同时,我们一定注意不同中的按钮的兼容性

微信公众号之底部菜单相关推荐

  1. 微信公众号聊天底部菜单动画

    为什么80%的码农都做不了架构师?>>>    AnimationSet animationSet = new AnimationSet(false);Animation hideA ...

  2. 微信公众号编辑底部自定义菜单解决方案

    微信公众号编辑底部自定义菜单解决方案 1.需求背景 最近开发公众号项目,关于公众号里面底部的菜单栏设置一般常用有两种方法. 1,是进入公众号后台,找到自定义菜单,点击后进入编辑页面,进行编辑即可. 2 ...

  3. 微信公众号自动回复-底部菜单栏-关键字回复-回复2条消息(1文字,1图片)

    微信公众号自动回复-底部菜单栏-关键字回复-回复2条消息(1文字,1图片)JAVA 主要实现: 1.关注后自动回复文字内容 2.关键字回复图文消息 3.实现公众号自定义底部菜单栏 - 点击菜单栏进入链 ...

  4. php创建菜单_php实现微信公众号创建自定义菜单功能的实例代码

    目的 创建自定义菜单,实现菜单事件. 首先获取Access_Token 接口: 我用的是测试号,修改APPID和APPSECRET,然后浏览器访问上面这个Url即可生成Access_Token 然后配 ...

  5. php 微信开发 菜单,微信公众号中个性化菜单的开发实例

    微信公众号中个性化菜单的开发实例 个性化菜单让公众号的不同用户群体看到不一样的自定义菜单.该接口开放给已认证订阅号和已认证服务号,个性化菜单要求用户的微信客户端版本在iPhone6.2.2,Andro ...

  6. java自定义菜单跳转页面_微信公众号开发 自定义菜单跳转页面并获取用户信息实例详解...

    微信公众号开发 自定义菜单 请先读完本文再进行配置开发 请先前往微信平台开发者文档阅读"网页授权获取用户基本信息"的接口说明 在微信公众账号开发中,往往有定义一个菜单,然后用户点击 ...

  7. android 微信公众号开发教程,微信公众号-开发者-自定义菜单,公众开发者

    微信公众号-开发者-自定义菜单,公众开发者 我是个初学者,网上找了看了好多,都是第三方实现的,考虑到安全问题,不敢用! 今天终于摸索出了实现方法. 官方api:http://mp.weixin.qq. ...

  8. 怎样实现微信公众号点击菜单自动回复文字信息

    为了满足微信公众号点击菜单自动回复文字信息的需要,第三方平台微号帮提供了粉丝点菜单定时推送功能实现,粉丝点击公众号菜单栏可以自动回复文字信息,可以更改回复信息的昵称和头像,回复信息内容可以显示粉丝昵称 ...

  9. 微信公众号开发--自定义菜单跳转页面并获取用户信息(续)

    之前写过一篇微信公众号开发–自定义菜单跳转页面并获取用户信息 由于当时是刚学习微信公众号开发当时的思路虽然可行,不过不是最好的,最近也用到了需要获取用户信息的地方,再次整理一下. 流程 注意点 ### ...

最新文章

  1. 找出1000以内的完数,所谓完数是指该数的各因子之和等于该数,如:6 = 1+2+3。
  2. linux的mutex状态查询命令,如何断言std :: mutex是否已锁定?
  3. [android] listview入门
  4. python随机数比大小_1到范围内的随机数系统最大大小总是1模2^10
  5. 《思科数据中心I/O整合》一2.11 活动-活动连接(Active-Active)
  6. CompactExifLib:访问JPEG文件中的EXIF标签
  7. C++ Struct和Union区别
  8. python视频教程-中谷python中文视频教程(全38集)
  9. CSS学习笔记:transition
  10. 计算机录屏幕和声音的软件是什么,win7电脑如何录屏?怎么录屏幕视频和声音...
  11. “互联网+”带给云计算的机会
  12. 计算机常用的存储设备外存有哪些,计算机中常用的存储设备有哪些?
  13. 8086CPU寄存器全称
  14. Linux下文件的压缩、解压缩、打包以及提取
  15. Ubuntu 中文字体美化方案大全 (1): 概述篇
  16. 生产环境如何关闭报错功能_知识分享---如何区分前端与后端bug
  17. 数据列表组件 jqGrid 二次封装
  18. 1012: 8除不尽的数
  19. 计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决
  20. 2021-07-19 暑假集训Day1

热门文章

  1. go install报错no install location for directory outside GOPATH
  2. 微信小程序 音乐播放代码(播放方式,歌词滚动) (更新优化版:添加文字颜色过渡)
  3. Visual Studio中更改项目名称
  4. linux内核文档翻译之——V4L2-framework.txt V4L2 API Specification
  5. 1-2、戴尔DELL服务器R730XD配置bios,raid,R720XD安装系统,DELL510配置管理口
  6. java题兔子第三个月生_JAVA编程之古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子...
  7. 110.Balanced Binary Tree
  8. ubuntu系统安装好搜狗输入法后只能输入英文,无法输入中文的解决方案
  9. C#使用iTextSharp给PDF文件添加水印,PDF文件加密,PDF文件旋转
  10. windows内网的情况下如何访问外网