• 在上篇文章实现微信扫码获取带指定参数时,微信公众号后台启用了服务器配置,导致之前设置好的微信自定义菜单失效。 开启了服务器配置,就无法用之前的方式在微信公众平台配置自定义菜单 此时,我们要通过接口来...

    在上篇文章实现微信扫码获取带指定参数时,微信公众号后台启用了服务器配置,导致之前设置好的微信自定义菜单失效。
    这里写图片描述
    开启了服务器配置,就无法用之前的方式在微信公众平台配置自定义菜单
    此时,我们要通过接口来配置微信自定义菜单,微信自定义菜单接口链接

    这里写图片描述

    首先,我们打开微信公众平台接口调试工具 接口调试工具
    1.通过appid以及secret来获取access_token,
    这里写图片描述

    2.组织创建菜单内容。微信提供了许多不同功能的按钮类型,可根据实际需求组织创建。
    这里简单的创建两个1级view类型按钮:即用户点击按钮实现跳转URL。

    {
        "button": [
            {
                "type": "view", 
                "name": "百度", 
                "url": "http://www.baidu.com"
            }, 
            {
                "type": "view", 
                "name": "淘宝", 
                "url": "http://www.taobao.com"
            }
        ]
    }

    3.在接口调试工具- - -选择 ‘自定义菜单’的接口类型,填入access_token,以及刚刚构建好的菜单内容。

    这里写图片描述

    点击检查问题,如果填写参数正确,则请求成功。
    这里写图片描述

    此时,重新打开或重新关注公众号,即能看到刚刚构建的自定义菜单已经生效。

    展开全文
  • 微信打开开发者模式后,以前通过微信后台配置菜单就失效了,需要通过我们自己服务器后台配置(需要开发),还有一种比较简单的方法,就是通过微信提供的“微信公众平台接口测试工具”进行配置。下面重点说一下通过...

    微信打开开发者模式后,以前通过微信后台配置的菜单就失效了,需要通过我们自己服务器后台配置(需要开发),还有一种比较简单的方法,就是通过微信提供的“微信公众平台接口测试工具”进行配置。下面重点说一下通过微信提供的测试工具进行配置的过程。

    一、进入微信接口调试页面

    地址:https://mp.weixin.qq.com/debug


    接口类型选择“自定义菜单”

    接口列表选择“自定义菜单创建接口/menu/create”

    接口参数:

    access_token: 是公众号访问接口用的,需要填写要修改的公众号access_token

    body: 创建菜单的JSON串。示例如下:

    示例一:(创建两个一级按钮菜单)

    {
        "button": [
            {
                "type": "view", 
                "name": "报名邀请", 
                "url": "https://blog.csdn.net/u014740338"
            }, 
            {
                "type": "view", 
                "name": "我的博客", 
                "url": "https://blog.csdn.net/u014740338"
            }
        ]
    }

    我创建的是连个view类型的菜单,也可以创建click类型的。

    示例二:(创建一级菜单+二级菜单)

    {
    	"button": [{
    		"type": "view",
    		"name": "技术积累",
    		"url": "https://blog.csdn.net/u014740338"
    	},
    	{
    		"name": "工作",
    		"sub_button": [{
    			"type": "view",
    			"name": "遇到的bug",
    			"url": "https://blog.csdn.net/u014740338"
    		},
    		{
    			"type": "view",
    			"name": "工作记录",
    			"url": "https://blog.csdn.net/u014740338"
    		}]
    	},
    	{
    		"type": "view",
    		"name": "我的博客",
    		"url": "https://blog.csdn.net/u014740338"
    	}]
    }

    body写好之后点击“检查问题”按钮。若创建成功会返回一下信息:


    若创建失败,检查access_token是否正确。

    若没有公众号来玩,可以自己申请一个测试账号,具体流程可以参考我上篇博客。

    展开全文
  • 微信打开开发者模式后,以前通过微信后台配置菜单就失效了,需要通过我们自己服务器后台配置(需要开发),还有一种比较简单的方法,就是通过微信提供的“微信公众平台接口测试工具”进行配置。下面重点说一下通过...

    借鉴于:https://blog.csdn.net/u014740338/article/details/79670779

    微信打开开发者模式后,以前通过微信后台配置的菜单就失效了,需要通过我们自己服务器后台配置(需要开发),还有一种比较简单的方法,就是通过微信提供的“微信公众平台接口测试工具”进行配置。下面重点说一下通过微信提供的测试工具进行配置的过程。

    一、进入微信接口调试页面

    接口参数:

    access_token: 是公众号访问接口用的,需要填写要修改的公众号access_token。

    body: 创建菜单的JSON串。示例如下:(创建一级菜单+二级菜单

     

    {
    	"button": [{
    		"type": "view",
    		"name": "技术查看",
    		"url": "https://blog.csdn.net/weixin_43229729"
    	},
    	{
    		"name": "学习",
    		"sub_button": [{
    			"type": "view",
    			"name": "遇到的问题",
    			"url": "https://blog.csdn.net/weixin_43229729"
    		},
    		{
    			"type": "view",
    			"name": "学习记录",
    			"url": "https://blog.csdn.net/weixin_43229729"
    		}]
    	},
    	{
    		"type": "view",
    		"name": "我的博客",
    		"url": "https://blog.csdn.net/weixin_43229729"
    	}]
    
    }

    body写好之后点击“检查问题”按钮。若创建成功会返回一下信息:

     

    二,通过调用微信api进行设置(自定义菜单创建/查询/删除)

    关于自定义菜单的查询和删除,直接看微信官方文档。

    微信官网文档:https://developers.weixin.qq.com/doc/offiaccount/Custom_Menus/Deleting_Custom-Defined_Menu.html

    展开全文
  • 微信开发交流群:148540125系列文章参考地址 极速开发微信公众号欢迎留言、转发 项目源码参考地址 点我点我–欢迎Start 前几篇文章已讲完如何导入项目,如何启动配置项目,如何成为开发者,重源码分析消息是如何...

    微信开发交流群:148540125

    系列文章参考地址 极速开发微信公众号

    欢迎留言、转发
    项目源码参考地址 点我点我–欢迎Start

    前几篇文章已讲完如何导入项目,如何启动配置项目,如何成为开发者,重源码分析消息是如何交互(如果前四项不是很清楚可以看这里 极速开发微信公众号。这篇文章就来讲讲如果实现自定义菜单

    实现自定义菜单有两种方式
    1、编辑模式
    2、开发模式

    编辑模式就很简单了就不赘述了……

    开发模式实现自定义菜单

    1、使用微信公众平台接口调试工具实现
    2、使用官方提供的接口实现

    前期准备

    注意:
    1、目前订阅号 只能使用编辑模式而且不能添加超链接,微信认证之后才可以使用开发模式。
    2、编辑模式与开发模式不能同时开启
    3、生成的菜单不会立即显示(隔天),如果想立即看到效果可以取消关注再关注

    添加插件

    K8WTIEI86W9W5XERD`MRD{6.png

    使用微信公众平台接口调试工具实现

    自定义菜单-接口调试工具.png

    可以看到需要两个参数而且都是必填 access_token body

    有人要问,这两个参数如何获取呢?

    body 其实就是要生成菜单的JSON对象 官方有提供一个栗子可以参考

     {
         "button":[
         {  
              "type":"click",
              "name":"今日歌曲",
              "key":"V1001_TODAY_MUSIC"
          },
          {
               "name":"菜单",
               "sub_button":[
               {    
                   "type":"view",
                   "name":"搜索",
                   "url":"http://www.soso.com/"
                },
                {
                   "type":"view",
                   "name":"视频",
                   "url":"http://v.qq.com/"
                },
                {
                   "type":"click",
                   "name":"赞一下我们",
                   "key":"V1001_GOOD"
                }]
           }]
     }
    

    access_token 的获取如下图
    自定义菜单-获取access_token.png

    使用官方提供的接口实现

    初次了解微信自定义菜单的同学建议先看看官方的文档3遍

    Jfinal-weixin中有封装菜单的创建、查询、删除、以及个性化菜单的创建、查询、删除、测试个性化菜单匹配结果

    自定义菜单-菜单封装的接口.png

    那么问题来了,封装好了如何使用呢?
    以下是提供封装的接口

        //查询自定义菜单
        public static ApiResult getMenu() {
            String jsonResult = HttpUtils.get(getMenu + AccessTokenApi.getAccessTokenStr());
            return new ApiResult(jsonResult);
        }
        //创建自定义菜单
        public static ApiResult createMenu(String jsonStr) {
            String jsonResult = HttpUtils.post(createMenu + AccessTokenApi.getAccessTokenStr(), jsonStr);
            return new ApiResult(jsonResult);
        }
        //删除自定义菜单
        public static ApiResult deleteMenu() {
            String jsonResult = HttpUtils.get(deleteMenuUrl + AccessTokenApi.getAccessTokenStr());
            return new ApiResult(jsonResult);
        }
        //创建个性化自定义菜单
        public static ApiResult addConditional(String jsonStr) {
            String jsonResult = HttpUtils.post(addConditionalUrl + AccessTokenApi.getAccessTokenStr(), jsonStr);
            return new ApiResult(jsonResult);
        }
        //删除个性化自定义菜单
        public static ApiResult delConditional(String menuid) {
            HashMap params = new HashMap();
            params.put("menuid", menuid);
            String url = delConditionalUrl + AccessTokenApi.getAccessTokenStr();
            String jsonResult = HttpUtils.post(url, JsonUtils.toJson(params));
            return new ApiResult(jsonResult);
        }
        //测试个性化菜单匹配结果
        public static ApiResult tryMatch(String userId) {
            HashMap params = new HashMap();
            params.put("user_id", userId);
            String url = tryMatchUrl + AccessTokenApi.getAccessTokenStr();
            String jsonResult = HttpUtils.post(url, JsonUtils.toJson(params));
            return new ApiResult(jsonResult);
        }
    
        public static ApiResult getCurrentSelfMenuInfo() {
            String jsonResult = HttpUtils.get(getCurrentSelfMenuInfoUrl + AccessTokenApi.getAccessTokenStr());
            return new ApiResult(jsonResult);
        }

    开源项目weixin_guidecom.javen.weixin.menu.MenuManager类中提供了详细使用的Demo

    public static void main(String[] args) { 
    
               // 将菜单对象转换成json字符串
               String jsonMenu = JsonKit.toJson(getTestMenu()).toString();
               System.out.println(jsonMenu);
               ApiConfig ac = new ApiConfig();
    
                // 配置微信 API 相关常量 请使用你自己公众号的
                ac.setAppId("wx614c453e0d1dcd12");
                ac.setAppSecret("19a02e4927d346484fc70327970457f9");
    //          ac.setAppId(PropKit.get("appId"));
    //          ac.setAppSecret(PropKit.get("appSecret"));
                ApiConfigKit.setThreadLocalApiConfig(ac);
    
               //创建菜单
               ApiResult apiResult=MenuApi.createMenu(jsonMenu);
               System.out.println(apiResult.getJson());
         }  

    可以看到main方法中调用了MenuApi.createMenu(jsonMenu)
    jsonMenu 从何而来呢?

    其实这里是将自定义菜单的实体对象转化为了JSON

    String jsonMenu = JsonKit.toJson(getTestMenu()).toString();

    菜单的封装

     
                 *  
                 * 在某个一级菜单下没有二级菜单的情况,menu该如何定义呢?
    * 比如,第三个一级菜单项不是“更多体验”,而直接是“幽默笑话”,那么menu应该这样定义:
    * menu.setButton(new Button[] { mainBtn1, mainBtn2, btn33 }); */ Menu menu = new Menu(); menu.setButton(new Button[] { mainBtn1, mainBtn2, mainBtn3 }); return menu; }" data-snippet-id="ext.c263135461e9345e2fb1fe96fc2d9c0c" data-snippet-saved="false" data-codota-status="done">/** * 组装菜单数据 * * @return */ private static Menu getTestMenu() { ClickButton btn11 = new ClickButton(); btn11.setName("微信相册发图"); btn11.setType("pic_weixin"); btn11.setKey("rselfmenu_1_1"); ClickButton btn12 = new ClickButton(); btn12.setName("拍照或者相册发图"); btn12.setType("pic_photo_or_album"); btn12.setKey("rselfmenu_1_2");; ClickButton btn13 = new ClickButton(); btn13.setName("系统拍照发图"); btn13.setType("pic_sysphoto"); btn13.setKey("rselfmenu_1_3"); ClickButton btn21 = new ClickButton(); btn21.setName("扫码带提示"); btn21.setType("scancode_waitmsg"); btn21.setKey("rselfmenu_2_1");; ClickButton btn22 = new ClickButton(); btn22.setName("扫码推事件"); btn22.setType("scancode_push"); btn22.setKey("rselfmenu_2_2");; ViewButton btn23 = new ViewButton(); btn23.setName("我的设备"); btn23.setType("view"); btn23.setUrl("https://hw.weixin.qq.com/devicectrl/panel/device-list.html?appid=wx614c453e0d1dcd12"); ViewButton btn31 = new ViewButton(); btn31.setName("微社区"); btn31.setType("view"); btn31.setUrl("http://whsf.tunnel.mobi/whsf/msg/wsq"); ClickButton btn32 = new ClickButton(); btn32.setName("发送位置"); btn32.setType("location_select"); btn32.setKey("rselfmenu_3_2"); //http://tencent://message/?uin=572839485&Site=在线咨询&Menu=yes //http://wpa.qq.com/msgrd?v=3&uin=572839485&site=qq&menu=yes ViewButton btn33 = new ViewButton(); btn33.setName("在线咨询"); btn33.setType("view"); btn33.setUrl("http://wpa.qq.com/msgrd?v=3&uin=572839485&site=qq&menu=yes"); ViewButton btn34 = new ViewButton(); btn34.setName("我的博客"); btn34.setType("view"); btn34.setUrl("http://www.cnblogs.com/zyw-205520"); ClickButton btn35 = new ClickButton(); btn35.setName("点击事件"); btn35.setType("click"); btn35.setKey("rselfmenu_3_5"); ComButton mainBtn1 = new ComButton(); mainBtn1.setName("发图"); mainBtn1.setSub_button(new Button[] { btn11, btn12, btn13}); ComButton mainBtn2 = new ComButton(); mainBtn2.setName("扫码"); mainBtn2.setSub_button(new Button[] { btn21, btn22 ,btn23}); ComButton mainBtn3 = new ComButton(); mainBtn3.setName("个人中心"); mainBtn3.setSub_button(new Button[] { btn31, btn32, btn33, btn34 ,btn35 }); /** * 这是公众号xiaoqrobot目前的菜单结构,每个一级菜单都有二级菜单项<br> * * 在某个一级菜单下没有二级菜单的情况,menu该如何定义呢?<br> * 比如,第三个一级菜单项不是“更多体验”,而直接是“幽默笑话”,那么menu应该这样定义:<br> * menu.setButton(new Button[] { mainBtn1, mainBtn2, btn33 }); */ Menu menu = new Menu(); menu.setButton(new Button[] { mainBtn1, mainBtn2, mainBtn3 }); return menu; }

    执行main方法会输出生成菜单的JSON以及响应的状态

    生成菜单的JSON:{"button":[{"sub_button":[{"name":"微信相册发图","type":"pic_weixin","key":"rselfmenu_1_1"},{"name":"拍照或者相册发图","type":"pic_photo_or_album","key":"rselfmenu_1_2"},{"name":"系统拍照发图","type":"pic_sysphoto","key":"rselfmenu_1_3"}],"name":"发图","type":null},{"sub_button":[{"name":"扫码带提示","type":"scancode_waitmsg","key":"rselfmenu_2_1"},{"name":"扫码推事件","type":"scancode_push","key":"rselfmenu_2_2"},{"name":"我的设备","type":"view","url":"https://hw.weixin.qq.com/devicectrl/panel/device-list.html?appid=wx614c453e0d1dcd12"}],"name":"扫码","type":null},{"sub_button":[{"name":"微社区","type":"view","url":"http://whsf.tunnel.mobi/whsf/msg/wsq"},{"name":"发送位置","type":"location_select","key":"rselfmenu_3_2"},{"name":"在线咨询","type":"view","url":"http://wpa.qq.com/msgrd?v=3&uin=572839485&site=qq&menu=yes"},{"name":"我的博客","type":"view","url":"http://www.cnblogs.com/zyw-205520"},{"name":"点击事件","type":"click","key":"rselfmenu_3_5"}],"name":"个人中心","type":null}],"matchrule":null}
    
    响应的状态: {"errcode":0,"errmsg":"ok"}

    以上是生成自定义菜单的全过程。

    欢迎留言、转发
    项目源码参考地址 点我点我–欢迎Start

    展开全文
  • 此时,我们要通过接口来配置微信自定义菜单微信自定义菜单接口链接 先查看官方文档的自定义菜单: 然后,我们打开微信公众平台接口调试工具 接口调试工具 首先,通过appid以及secret来获取access_token: 获取到...

    在这里插入图片描述
    要知道公众号开启开发者模式后,公众号自带的功能就不能使用了。
    那么如何自定义菜单呢?
    此时,我们要通过接口来配置微信自定义菜单,微信自定义菜单接口链接
    先查看官方文档的自定义菜单:
    在这里插入图片描述
    然后,我们打开微信公众平台接口调试工具 接口调试工具
    首先,通过appid以及secret来获取access_token:
    在这里插入图片描述
    获取到了access_token后,就开始组织创建菜单内容了。
    微信官方提供了许多不同功能的按钮类型,可根据实际需求组织创建。
    在这里插入图片描述
    这里简单的添加了一个按钮点击click事件、一个view点击跳转事件、还有一个二级菜单事件。注意:click按钮都是key-value的形式的,所以这个key属性的值就是你在后台获取到该事件的key;而view事件的url则是点击该按钮将要跳转的url;二级菜单则是用sub_button属性将要展开的按钮事件包裹在内。

    {
        "button": [
            {
                "type": "click", 
                "name": "我的绑定", 
                "key": "binding"
            }, 
            {
                "type": "view", 
                "name": "绑定用户", 
                "url": "http://eduapp.guangyusoft.com/xxxxx1.jsp"
            }, 
            {
                "name":"使用指南",
               "sub_button":[
               {    
                   "type":"view",
                   "name":"为什么要绑定微信",
                   "url":"http://eduapp.guangyusoft.com/xxxxx2.jsp"
                },
               {    
                   "type":"view",
                   "name":"红包的发放规则",
                   "url":"http://eduapp.guangyusoft.com/xxxxx3.jsp"
                },
               {    
                   "type":"view",
                   "name":"系统使用模式",
                   "url":"http://eduapp.guangyusoft.com/xxxxx4.jsp"
                }]
            }
        ]
    }
    

    最后,在接口调试工具中,选择 “自定义菜单”的接口类型,填入access_token,和刚刚构建好的菜单内容。
    在这里插入图片描述
    点击检查问题,如果填写参数正确,则请求成功。
    在这里插入图片描述
    然后就可以在公众号中看到成效了。如果打开公众号没效果的话,重复打开关闭公众号几次或者重新关注公众号即可。
    在这里插入图片描述

    展开全文
  • http://mp.weixin.qq.com/debug 用这个调式页面查询出菜单后再按原内容创建回去无法打开公众号页面了,请问是什么原因,这个页面可能创建菜单吗?
  • 微信公众号在编辑模式下,设置菜单很容易,开发者模式不同,需要用代码实现。 开发者模式下菜单是通过请求微信指定的接口获取的,接口地址是:POST(请使用https协议)http请求方式:POST(请使用https协议) ...
  • 微信公众号的开发模式和编辑模式是互斥的使用一种另一种则会关闭,开发模式需要java和文档,编辑模式就简单了。 编辑模式:主要针对非编程人员及信息发布类公众帐号使用。开启该模式后,可以方便地通过界面配置...
  • 本文demo下载:wisdomdd.cn微信公众号的菜单可以通过公众号平台进行配置,但如果你的公众号使用开发模式,那么就不能使用普通的方式配置菜单, 下面的视频讲解了配置菜单的二种方式(1)使用平台界面接口方式配置 (2)...
  • 事件还原:前段时间想添加几个关键字回复然后发现... 原因:哪怕再开发者模式下配置了自定义菜单,每次关闭开发者模式在开启后都需要重新生成一次自定义菜单接口 解决方案:https://blog.csdn.net/weixin_39696369/...
  • 首先说微信企业号的开发模式分为:编辑模式(普通模式)和开发模式(回调模式),在编辑模式,只能做简单的自定义菜单和自动回复消息,要想实现其他功能还得开启开发者模式。 一、编辑模式和开发模式对消息的处理...
  • 编辑模式与开发模式 微信公众帐号申请成功后,要想接收处理用户的请求,就必须要在“高级功能”里进行配置,点击“高级功能”,将看到如下界面: 从上图中可以看到,高级功能包含两种模式:编辑模式和开发模式...
  • 微信公众号开发(一)服务器及接口的配置 关于微信公众号中的订阅号和服务的区别这里不多加讨论,网上有很多资源可以搜到,这里直接进入正题,如果是个人开发者,这里建议使用测试号进行开发学习,测试号的权限要比...
  • 编辑模式与开发模式 微信公众帐号申请成功后,要想接收处理用户的请求,就必须要在“高级功能”里进行配置,点击“高级功能”,将看到如下界面: 从上图中可以看到,高级功能包含两种模式:编辑模式和开发模式...
  • 编辑模式与开发模式 微信公众帐号申请成功后,要想接收处理用户的请求,就必须要在“高级功能”里进行配置,点击“高级功能”,将看到如下界面: 从上图中可以看到,高级功能包含两种模式:编辑模式和开发模式,...
  • 1.1 在微信公众平台中的配置 在你刚申请公众号之后你还不是开发者,需要你在微信公众平台的基本配置里面授权成为开发者 授权之后你就会看到这样的界面: 在这个页面里面拿到开发时所必要的信息:appid、...
  • 微信开发之入门教程

    2016-01-12 10:55:26
    微信开发也是有了一定的认识。在此,小宝鸽再次无私地分享给大家啦。其实微信开发跟web开发没有多大的区别,只是经过了微信,然后再由浏览器打开。因为经过微信,因此你的web会附加一些微信平台所提供的一些功能,...
  • 微信开发平台开发者中心中可以看到,高级功能包含两种模式:编辑模式和开发模式,并且这两种模式是互斥关系,即两种模式不能同时开启。那两种模式有什么区别呢,作为开发人员到底要开启哪一种呢? 编辑模式:主要...
  • 首先看服务号下面配置信息,表示开发者模式已经打开。 这个时候,进入服务号查看,菜单已经消失。 接下来就是我们今天的主要内容,通过官方提供的调试工具,创建菜单。 当然,你也可以手写请求过程,第一步获取...
1 2 3 4 5 ... 20
收藏数 7,873
精华内容 3,149