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

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

    这里写图片描述

    首先,我们打开微信公众平台接口调试工具 接口调试工具
    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

    展开全文
  • java版微信公众号开发自定义菜单的创建
    废话(不过还是必须得看):
    在微信公众号启动开发者模式之后,微信公众号后台的自定义菜单便无法再使用!需要自己在服务器上进行自定义菜单的开发。自定义菜单接口地址: https://api.weixin.qq.com/cgi-bin/menu/create?access_token=accessToken"其中的accessToken的
    获取在上面已经说过便不再多加赘述,自定义菜单创建的接口目前每日访问上限为1000次,菜单创建的时候最多只能有三个一级菜单,每个一级菜单最多有五个二级菜单。

    注意:
    值得注意的是呢,微信自定义菜单创建成功之后是有生效时间的,在官方的介绍上说的时间是24小时之内,一般会在5-6小时之内生效,但是我们平常肯定是不愿意去等待的,多无聊......有一个办法就是在项目启动并在微信后台启动开发者模式之后直接在浏览器路径中请求你自己写的创建菜单的路径,这样子的话你重新关注公众号之后你的自定义菜单就会生效,百试不爽......我曾经等的痛不欲生


    逻辑:
    在创建自定义菜单的时候必须将菜单数据整合成JSON类型的数据发送到微信服务器,拼接起来比较麻烦就没有使用这种方式,另外在网上又找的方式。另外就是自定义菜单有十种类型,我只用到过两种(CLICK和VIEW),其他的几种不做说明


    1、首先创建几个Entity表示菜单
    1)Button.java --表示菜单类的基类,一级菜单和二级菜单的Entity都继承此Entity
    private String name;

    2)ComplexButton.java--表示一级菜单
    private String name;//菜单名称
    private Button[] sub_button;//子级菜单,因为一个一级菜单可以有多个二级菜单,所以这儿使用二级 菜单类型的集合

    3)CommonButton.java--表示二级菜单(CLICK类型)
    private String type;//菜单类型
    private String key;//key值

    4)ViewButton.java--表示二级菜单(VIEW类型)
    private String type;//菜单类型
    private String url;//view路径值

    4)Menu.java --表示要创建的菜单
    private ComplexButton[] button;


    至于上面的三个Entity为什么有这几个属性自己参考微信公众号的开发者文档,上面有具体说明

    2、创建菜单的Util
    public class MenuUtil {
    /**
    * 封装菜单数据
    * */
    public static Menu getMenu(){
    //首先创建二级菜单
    CommonButton cb_1 = new CommonButton();
    cb_1.setKey("key1");
    cb_1.setName("子菜单1");
    cb_1.setType("click");


    CommonButton cb_2 = new CommonButton();
    cb_2.setKey("key2");
    cb_2.setName("子菜单2");
    cb_2.setType("click");

    //创建第一个一级菜单
    ComplexButton cx_1 = new ComplexButton();
    cx_1.setName("一级菜单");
    cx_1.setSub_button(new Button[]{cb_1,cb_2});


    //继续创建二级菜单
    CommonButton cb_3 = new CommonButton();
    cb_3.setKey("key3");
    cb_3.setName("子菜单3");
    cb_3.setType("click");


    ViewButton cb_4 = new ViewButton();
    cb_4.setName("访问网页");
    cb_4.setType("view");
    //需要使用网页授权获取微信用户的信息
    cb_4.setUrl("https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=要访问的网页                                        &response_type=code&scope=snsapi_base&state=xxx");

    //创建第二个一级菜单
    ComplexButton cx_2 = new ComplexButton();
    cx_2.setName("一级菜单");
    cx_2.setSub_button(new Button[]{cb_3,cb_4});

    //封装菜单数据
    Menu menu=new Menu();
    menu.setButton(new ComplexButton[]{cx_1,cx_2});

    return menu;
    }


    /**
    * 创建自定义菜单(每天限制1000次)
    * */
    public static int createMenu(Menu menu){
    String jsonMenu=JSONObject.fromObject(menu).toString();

    int status=0;

    System.out.println("菜单:"+jsonMenu);
    String path="https://api.weixin.qq.com/cgi-bin/menu/create?access_token="+TokenThread.access_token.getAccess_token();
    try {
    URL url=new URL(path);
    HttpURLConnection http = (HttpURLConnection)url.openConnection();
    http.setDoOutput(true);
    http.setDoInput(true);
    http.setRequestMethod("POST");
    http.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
    http.connect();
    OutputStream os = http.getOutputStream();
    os.write(jsonMenu.getBytes("UTF-8"));
    os.close();

    InputStream is = http.getInputStream();
    int size = is.available();
    byte[] bt = new byte[size];
    is.read(bt);
    String message=new String(bt,"UTF-8");
    JSONObject jsonMsg = JSONObject.fromObject(message);
    status = Integer.parseInt(jsonMsg.getString("errcode"));
    } catch (MalformedURLException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    return status;
    }
    }


    3、创建菜单的Controller
    /**
    * 创建菜单
    * */
    @RequestMapping("/createMenu")
    public void createMenu(){
    //调用UTI执行创建菜单的动作
    int status = MenuUtil.createMenu(MenuUtil.getMenu());
    if(status==0){
    System.out.println("菜单创建成功!");
    }else{
    System.out.println("菜单创建失败!");
    }
    }




    要想创建的菜单立即生效必须在项目启动之后手动请求一下创建的Controller再重新关注微信公众号方可生效,否则的话,你就慢慢等吧.......


    源码下载地址:

    http://download.csdn.net/detail/qq_16071145/9516014

    展开全文
  • 所以我们启用微信公众号的开发模式之后,那些菜单是看不到的哦。不过现在个人订阅号是不可以使用高级开发者模式的,如自定义菜单,不过我们还是可以通过测试号来测试一下,然后移代码到服务号。 自定义类型包括如下...
  • 微信接口自定义菜单在线客服微信支付
  • 此时,我们要通过接口来配置微信自定义菜单微信自定义菜单接口链接 先查看官方文档的自定义菜单: 然后,我们打开微信公众平台接口调试工具 接口调试工具 首先,通过appid以及secret来获取access_token: 获取到...
  • 所以我们启用微信公众号的开发模式之后,那些菜单是看不到的哦。不过现在个人订阅号是不可以使用高级开发者模式的,如自定义菜单,不过我们还是可以通过测试号来测试一下,然后移代码到服务号。 自定义类型包括如下...
  • 纯属分享 var config = require('./admin/wx/config/config'); var API = require('wechat-api'); ...var api = new API(config.appid, config.appsecret);...api.getAccessToken(function (err, token) { ...
  • 点开开发模式,原菜单一定失效了。 点击微信公众平台,左侧添加功能插件 点击自定义菜单 点击开启
  • 1.很多同学都吐槽,搞了个服务号,自然要好好发挥自定义菜单这个得天独厚的功能。 但在开发者模式下,要么通过本地代码上传,但这个很容易失败; 要么编辑好菜单的JSON数据,使用在线生成的办法,但这会遇到一个...
  • 前几天在修改某平台微信公众号自定义创建菜单时有个奇怪的现象。 我是先查询该公众号的菜单,然后再根据查询后的结果修改公众号菜单,但我对其中一个url带&符号的url并未修改。修改成完后调用自定义创建菜单接口,...
  • 2)服务号可以申请自定义菜单; 3)使用QQ登录的公众号,可以升级为邮箱登录; 4)使用邮箱登录的公众号,可以修改登录邮箱; 5)编辑图文消息可选填作者; 6)群发消息可以同步到腾讯微博。 其中,大家议论...
  • 通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有...
  • 微信开发公众平台自定义菜单需要花钱认证才能实现,不想花钱只能玩测试账号了,不过这并不影响开发。我的开发都是基于柳峰老师的微信公众平台应用开发做的。 只要我们使用公众平台测试账号就可以开发自定义菜单了...
  • 微信公众平台开发模式自定义菜单接口API指南  开发实现方法,请查看  微信公众平台开发(58)自定义菜单   简介 开发者获取使用凭证(如何获取凭证)后,可以使用该凭证对公众账号的自定义菜单进行创建、...
  • 简介 开发者获取使用凭证(如何获取凭证)后,可以使用该凭证对公众账号的自定义菜单进行创建、查询和删除等操作。 自定义菜单接口可实现以下类型按钮: ...创建自定义菜单后,由于微信客户端缓存,需要2...
  • 我们在进行微信开发时都得调用各个接口,调用接口前获取到access_token,它是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用到access_token。为了避免过度获取access_token我们把它存入数据库中。这是...
1 2 3 4 5 ... 20
收藏数 7,832
精华内容 3,132