精华内容
下载资源
问答
  • access 中菜单的生成和删除 分享出来的一个案例,希望大家可以学会
  • 删除自定义菜单

    2015-05-21 17:20:00
    首先获得公众号的access_token,然后直接在浏览器中输入下面的链接,按回车即可删除指定公众号的自定义菜单。(将ACCESS_TOKEN换成实际access_token) ... 对应创建接口,正确的Json返回结果: {"errcode":0,"er...

    首先获得公众号的access_token,然后直接在浏览器中输入下面的链接,按回车即可删除指定公众号的自定义菜单。(将ACCESS_TOKEN换成实际access_token)

    https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN

    对应创建接口,正确的Json返回结果:
    {"errcode":0,"errmsg":"ok"}
     

    转载于:https://www.cnblogs.com/wujuntian/p/4520276.html

    展开全文
  • 采用wpf自定义控件,自定义布局,实现后台动态添加多级菜单功能,菜单构成是一级菜单上层小图片,下层菜单名。二级菜单是左侧小图片,右侧是菜单名称。一级和二级菜单有默认背景图片和选中后的图片。点击一级菜单...
  • C#+MFC添加修改windows窗口系统菜单自定义系统菜单),自己有修改菜单的需求,但是作为一个刚接触编程不久的小白在修改系统菜单这方面很吃力,最终是做了增加删除的效果但是还有子菜单和图标的问题没有解决
  • wpf TextBox 自定义菜单

    2015-05-28 15:10:09
    右键菜单 ContextMenu cont = new ContextMenu(); cont.Items.Add(new MenuItem() { Header="删除"}); cont.Items.Add(new MenuItem() { Header = "添加" }); textBox1.ContextMenu = cont; for (int i = 0; i ;...
  • 主要介绍了微信公众号开发之设置自定义菜单实例代码,本实例是为了实现在管理后台实现微信菜单的添加删除管理。需要的朋友可以参考下
  • 自定义菜单删除接口会一次性删除所有自定义菜单,请求地址是: https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN。成功后返回数据是: {"errcode":0,"errmsg":"ok"} 之所以没有提供删除...
  • 自定义菜单删除接口 使用接口创建自定义菜单后,开发者还可使用接口删除当前使用的自定义菜单。另请注意,在个性化菜单时,调用此接口会删除默认菜单及全部个性化菜单。 请求说明 http请求方式:GET ...

    自定义菜单删除接口

    使用接口创建自定义菜单后,开发者还可使用接口删除当前使用的自定义菜单。另请注意,在个性化菜单时,调用此接口会删除默认菜单及全部个性化菜单。

    请求说明

    http请求方式:GET
    https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN
    

    返回说明

    对应创建接口,正确的Json返回结果:

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

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 本例用C++实现了在系统右键菜单中添加自定义菜单项和删除自定义菜单项,内附源代码和可执行的release的exe文件。
  • 微信打开开发者模式后,以前通过微信后台配置的菜单就失效了,需要通过我们自己服务器后台配置(需要开发),还有一种比较简单的方法,就是通过微信提供的“微信公众平台接口测试工具”进行配置。下面重点说一下通过...

    借鉴于: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

    展开全文
  • * 菜单删除 * @param token * @return * @throws ParseException * @throws IOException */ public static int deleteMenu(String token) throws ParseException, IOException{ String url = DELETE_...

    首先申请微信公众号,建议学习的话使用测试账号,测试账号拥有微信公众号开发的所有权限。信息都弄好的时。

    1.创建微信公众号开发的工具类,里面有自己的APPID、APPSECRET信息(如果是测试账号的就填测试的信息)

    package com.wlw.util;
    
    import java.io.BufferedReader;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.net.URLEncoder;
    import java.security.KeyManagementException;
    import java.security.NoSuchAlgorithmException;
    import java.security.NoSuchProviderException;
    import java.util.List;
    import java.util.Map;
    
    import net.sf.json.JSONObject;
    
    import org.apache.http.HttpEntity;
    import org.apache.http.HttpResponse;
    import org.apache.http.ParseException;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.client.methods.HttpPost;
    import org.apache.http.entity.StringEntity;
    import org.apache.http.impl.client.DefaultHttpClient;
    import org.apache.http.util.EntityUtils;
    
    import com.wlw.menu.Button;
    import com.wlw.menu.ClickButton;
    import com.wlw.menu.Menu;
    import com.wlw.menu.ViewButton;
    import com.wlw.po.AccessToken;
    
    
    
    /**
     * 微信工具类
     * @author Stephen
     *
     */
    public class WeixinUtil {
    	//测试帐号,拥有所有权限
    	private static final String APPID = "******************";
    	private static final String APPSECRET = "*********************";
    	
    	private static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
    	
    	private static final String UPLOAD_URL = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE";
    	
    	private static final String CREATE_MENU_URL = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";
    	
    	private static final String QUERY_MENU_URL = "https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN";
    	
    	private static final String DELETE_MENU_URL = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN";
    	/**
    	 * get请求
    	 * @param url
    	 * @return
    	 * @throws ParseException
    	 * @throws IOException
    	 */
    	public static JSONObject doGetStr(String url) throws ParseException, IOException{
    		DefaultHttpClient client = new DefaultHttpClient();
    		HttpGet httpGet = new HttpGet(url);
    		JSONObject jsonObject = null;
    		HttpResponse httpResponse = client.execute(httpGet);
    		HttpEntity entity = httpResponse.getEntity();
    		if(entity != null){
    			String result = EntityUtils.toString(entity,"UTF-8");
    			jsonObject = JSONObject.fromObject(result);
    		}
    		return jsonObject;
    	}
    	
    	/**
    	 * POST请求
    	 * @param url
    	 * @param outStr
    	 * @return
    	 * @throws ParseException
    	 * @throws IOException
    	 */
    	public static JSONObject doPostStr(String url,String outStr) throws ParseException, IOException{
    		DefaultHttpClient client = new DefaultHttpClient();
    		HttpPost httpost = new HttpPost(url);
    		JSONObject jsonObject = null;
    		httpost.setEntity(new StringEntity(outStr,"UTF-8"));
    		HttpResponse response = client.execute(httpost);
    		String result = EntityUtils.toString(response.getEntity(),"UTF-8");
    		jsonObject = JSONObject.fromObject(result);
    		return jsonObject;
    	}
    	
    /**
    	 * 文件上传
    	 * @param filePath
    	 * @param accessToken
    	 * @param type
    	 * @return
    	 * @throws IOException
    	 * @throws NoSuchAlgorithmException
    	 * @throws NoSuchProviderException
    	 * @throws KeyManagementException
    	 */
    	public static String upload(String filePath, String accessToken,String type) throws IOException, NoSuchAlgorithmException, NoSuchProviderException, KeyManagementException {
    		File file = new File(filePath);
    		if (!file.exists() || !file.isFile()) {
    			throw new IOException("文件不存在");
    		}
    
    
    		String url = UPLOAD_URL.replace("ACCESS_TOKEN", accessToken).replace("TYPE",type);
    		
    		URL urlObj = new URL(url);
    		//连接
    		HttpURLConnection con = (HttpURLConnection) urlObj.openConnection();
    
    
    		con.setRequestMethod("POST"); 
    		con.setDoInput(true);
    		con.setDoOutput(true);
    		con.setUseCaches(false); 
    
    
    		//设置请求头信息
    		con.setRequestProperty("Connection", "Keep-Alive");
    		con.setRequestProperty("Charset", "UTF-8");
    
    
    		//设置边界
    		String BOUNDARY = "----------" + System.currentTimeMillis();
    		con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
    
    
    		StringBuilder sb = new StringBuilder();
    		sb.append("--");
    		sb.append(BOUNDARY);
    		sb.append("\r\n");
    		sb.append("Content-Disposition: form-data;name=\"file\";filename=\"" + file.getName() + "\"\r\n");
    		sb.append("Content-Type:application/octet-stream\r\n\r\n");
    
    
    		byte[] head = sb.toString().getBytes("utf-8");
    
    
    		//获得输出流
    		OutputStream out = new DataOutputStream(con.getOutputStream());
    		//输出表头
    		out.write(head);
    
    
    		//文件正文部分
    		//把文件已流文件的方式 推入到url中
    		DataInputStream in = new DataInputStream(new FileInputStream(file));
    		int bytes = 0;
    		byte[] bufferOut = new byte[1024];
    		while ((bytes = in.read(bufferOut)) != -1) {
    			out.write(bufferOut, 0, bytes);
    		}
    		in.close();
    
    
    		//结尾部分
    		byte[] foot = ("\r\n--" + BOUNDARY + "--\r\n").getBytes("utf-8");//定义最后数据分隔线
    
    
    		out.write(foot);
    
    
    		out.flush();
    		out.close();
    
    
    		StringBuffer buffer = new StringBuffer();
    		BufferedReader reader = null;
    		String result = null;
    		try {
    			//定义BufferedReader输入流来读取URL的响应
    			reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
    			String line = null;
    			while ((line = reader.readLine()) != null) {
    				buffer.append(line);
    			}
    			if (result == null) {
    				result = buffer.toString();
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			if (reader != null) {
    				reader.close();
    			}
    		}
    
    
    		JSONObject jsonObj = JSONObject.fromObject(result);
    		System.out.println(jsonObj);
    		String typeName = "media_id";
    		if(!"image".equals(type)){
    			typeName = type + "_media_id";
    		}
    		String mediaId = jsonObj.getString(typeName);
    		return mediaId;
    	}
    
    	/**
    	 * 获取accessToken
    	 * @return
    	 * @throws ParseException
    	 * @throws IOException
    	 */
    	public static AccessToken getAccessToken() throws ParseException, IOException{
    		AccessToken token = new AccessToken();
    		String url = ACCESS_TOKEN_URL.replace("APPID", APPID).replace("APPSECRET", APPSECRET);
    		JSONObject jsonObject = doGetStr(url);
    		if(jsonObject!=null){
    			token.setToken(jsonObject.getString("access_token"));
    			token.setExpiresIn(jsonObject.getInt("expires_in"));
    		}
    		return token;
    	}
    	
    	/**
    	 * 组装菜单
    	 * @return
    	 */
    	public static Menu initMenu(){
    		Menu menu = new Menu();
    		ClickButton button11 = new ClickButton();
    		button11.setName("click菜单");
    		button11.setType("click");
    		button11.setKey("11");
    		
    		ViewButton button21 = new ViewButton();
    		button21.setName("view菜单");
    		button21.setType("view");
    		button21.setUrl("http://www.imooc.com");
    		
    		ClickButton button31 = new ClickButton();
    		button31.setName("扫码事件");
    		button31.setType("scancode_push");
    		button31.setKey("31");
    		
    		ClickButton button32 = new ClickButton();
    		button32.setName("地理位置");
    		button32.setType("location_select");
    		button32.setKey("32");
    		
    		Button button = new Button();
    		button.setName("菜单");
    		button.setSub_button(new Button[]{button31,button32});
    		
    		menu.setButton(new Button[]{button11,button21,button});
    		return menu;
    	}
    	
    	/**
    	 * 创建菜单 
    	 * @param token
    	 * @param menu
    	 * @return
    	 * @throws ParseException
    	 * @throws IOException
    	 */
    	public static int createMenu(String token,String menu) throws ParseException, IOException{
    		int result = 0;
    		String url = CREATE_MENU_URL.replace("ACCESS_TOKEN", token);
    		JSONObject jsonObject = doPostStr(url, menu);
    		if(jsonObject != null){
    			result = jsonObject.getInt("errcode");
    		}
    		return result;
    	}
    	
    	/**
    	 * 查询菜单
    	 * @param token
    	 * @return
    	 * @throws ParseException
    	 * @throws IOException
    	 */
    	public static JSONObject queryMenu(String token) throws ParseException, IOException{
    		String url = QUERY_MENU_URL.replace("ACCESS_TOKEN", token);
    		JSONObject jsonObject = doGetStr(url);
    		return jsonObject;
    	}
    	
    	/**
    	 * 菜单删除
    	 * @param token
    	 * @return
    	 * @throws ParseException
    	 * @throws IOException
    	 */
    	public static int deleteMenu(String token) throws ParseException, IOException{
    		String url = DELETE_MENU_URL.replace("ACCESS_TOKEN", token);
    		JSONObject jsonObject = doGetStr(url);
    		int result = 0;
    		if(jsonObject != null){
    			result = jsonObject.getInt("errcode");
    		}
    		return result;
    	}
    	
    }
    2.实体类的创建

    公共属性抽取出来

    package com.wlw.menu;
    
    public class Button {
    
    	private String type;
    	private String name;
    	private Button[] sub_button;
    	public String getType() {
    		return type;
    	}
    	public void setType(String type) {
    		this.type = type;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public Button[] getSub_button() {
    		return sub_button;
    	}
    	public void setSub_button(Button[] sub_button) {
    		this.sub_button = sub_button;
    	}
    	
    }
    
    package com.wlw.menu;
    
    public class ClickButton extends Button{
      private String key;
    
    public String getKey() {
    	return key;
    }
    
    public void setKey(String key) {
    	this.key = key;
    }
      
    }
    


    package com.wlw.menu;
    
    public class Menu {
       private Button[] button;
    
    public Button[] getButton() {
    	return button;
    }
    
    public void setButton(Button[] button) {
    	this.button = button;
    }
    }
    

    package com.wlw.menu;
    
    public class ViewButton extends Button{
      private String url;
    
    public String getUrl() {
    	return url;
    }
    
    public void setUrl(String url) {
    	this.url = url;
    }
      
    }

    测试

    package test;
    
    
    import com.wlw.po.AccessToken;
    import com.wlw.util.WeixinUtil;
    
    import net.sf.json.JSONObject;
    
    public class WeixinTest {
    	public static void main(String[] args) {
    		
                try {
    			AccessToken token = WeixinUtil.getAccessToken();
    			System.out.println(token.getToken()+"getToken");
    			/*创建菜单*/
    			 String menu=JSONObject.fromObject(WeixinUtil.initMenu()).toString();
    			 System.out.println(menu);
    			int result = WeixinUtil.createMenu(token.getToken(), menu);
    			if (result == 0) {
    				System.out.println("创建菜单成功!");
    			}else {
    				System.out.println("创建菜单错误!");
    			}
    			System.out.println(result);
    			/**
    			 * 查询菜单
    			 *//*
    			JSONObject jsonObject=WeixinUtil.queryMenu(token.getToken());
    			System.out.println(jsonObject);*/
    			/**
    			 * 删除菜单
    			 *//*
              int result=WeixinUtil.deleteMenu(token.getToken());
              if(result==0) {
            	  System.out.println("删除成功!");
              }else {
            	  System.out.println(result);
              }*/
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    11_eh9k9Y5XzqbuIzYhT1aOxL3YBpccanTNT9DJDwGlbseCs3dhg7u6ZdInDbDa_ObLHpUhFpGvS_3-CjfYKz_0dOxIhrCasR_yCrAeW8ahtG-SJPZYjIC-UWLdEuWr1LMMHAn_VRSW84BdFR7LLOMhABAWZXgetToken
    {"button":[{"key":"11","name":"click菜单","sub_button":[],"type":"click"},{"name":"view菜单","sub_button":[],"type":"view","url":"http://www.imooc.com"},{"name":"菜单","sub_button":[{"key":"31","name":"扫码事件","sub_button":[],"type":"scancode_push"},{"key":"32","name":"地理位置","sub_button":[],"type":"location_select"}],"type":""}]}
    创建菜单成功!
    0

    总结:创建菜单和删除菜单需要先取消公众号关注,再关注公众号查看即可。

    我也是最近才研究微信公众号,有疑问留言,互相学习。

    展开全文
  • php实现微信公众号创建自定义菜单

    千次阅读 2019-06-10 18:42:10
    创建自定义菜单,实现菜单事件。 首先获取Access_Token 接口: https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET 然后配置菜单的事件,caidan.php <...
  • 微信公众号零基础开发视频--自定义菜单的查询和删除,零基础视频开发介绍
  • 自定义菜单测试4.1 查询菜单4.2 创建菜单4.3 再次查询4.4 删除菜单5. 小结 1. 前言 之前的章节,我们已经搭建了基于Spring Boot的项目wx-server,并引入了微信开发Java SDK----WxJava,后续我们只需要在此项目基础...
  • 主要介绍了vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单,本文给大家分享个例子,给大家及时的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
  • 1.查询菜单:get请求方式2.在工具类中添加访问get请求常量URL创建查询菜单方法:public static int createMenu(String token,String menu) throws ParseException, IOException{ int result = 0; String url = ...
  • 困难点:1.选中状态;2.布局,3.内容类型判断 ,4保存后数据的筛选,5数据结构的调整 1.菜单排序用Awe-dnd插件,地址:... 2.ui设计 ...a-page-header title="自定义菜单" /.
  • android 自定义菜单Android 7.0 Nougat brings a lot of new features and refinements to the table, like the ability to customize Android’s Quick Settings panel with custom tile containing unique toggles...
  • 关于自定义菜单,微信为我们提供了几个接口分别是创建、查询和删除。我们平时使用最多的就是创建菜单了,往往我们执行了创建菜单的代码后,菜单并不会当即在我们关注过的公众号上显示出来,我们可以通过重新关注的...
  • 一般开发中,会开发一个菜单创建和删除的接口,方便修改菜单布局和菜单的内容 先看一下官方文档的介绍 不难看出,创建菜单的接口是post请求,参数是json格式,返回如下 可以通过调用返回结果验证是否创建成功...
  • 公众号菜单栏的不同,在于菜单栏内容可以自定义。它分为两个部分,主菜单+...设置消息内容,用户点击该自定义菜单,会收到该消息,消息类型包括图文、文字、网址、图片、 小程序卡片、智能菜单。同时可以设置是否转...
  • 很久以前写的微信自定义菜单由于当时没有保存源码,现在再写服务器后台发布页面又要写一遍(在网上搜了一遍没有找到这方面UI和交互的,也没有尝试去扒微信公众平台的),花了些时间又写了一个,除了没有更换菜单位置...
  • laview之自定义菜单

    2020-07-06 17:17:58
    一、设置定义菜单方法1: 单击程序框图中的编辑下拉中的运行时...符号+为增加项,符号X为删除选中项次,左箭头为上升为上级菜单,右箭头为下沉到相邻上边的子菜单 4.设置好后保存为xxx.rtm文件,退出时会提示:将运行
  • 自定义侧滑删除菜单

    2018-06-26 16:48:44
    自定义侧滑菜单上次写过一下但是有bug,最近修改了一下bug整理了一下思路重新上传
  • 1、概述 自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解...本文主要介绍微信自定义菜单的创建、查询、删除、各菜单类型事件的响应方法,以及菜单应用的界面整合参考。由于篇幅有限不可能面面俱到,只能...
  • (2)微信公众平台自定义菜单的创建、查询和删除。 实现菜单效果示例如下: 请通过2种方式实现创建菜单,写出所有实现步骤: 第一种方式: 使用微信公众平台接口调试工具创建。只需要输入access_token和菜单格式方可...
  • 自定义菜单要求 自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。 一级菜单最多4个汉字,二级菜单最多7+个汉字,多出来的部分将会以“...”代替。 创建自定义菜单后,菜单的刷新策略是,在用户...
  • vue项目使用wangeditor并自定义菜单 vue技术交流群(864583465) 1、安装wangeditor npm install wangeditor --save 或 cnpm install wangeditor --save 2、文件名.vue <template> <div class="hello"&...
  • * 自定义菜单和个性化菜单文档的阅读解析 * 菜单JSON的分析以及构建对应bean * 自定义菜单的实现 * 个性化菜单的实现 * 微信自定义菜单所有类型菜单都给出演示 * 本文结束会给出包括本文前四篇文章的所有演示...
  • 微信自定义菜单+获取网页授权+获取用户信息 今天项目需要一个需求,就是添加一个菜单接口,并且还可以获取用于的信息,从而根据用户的信息去做一些业务的查询。通过百度和自己查看文档大致的解决办法如下: 1 首先...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 123,218
精华内容 49,287
关键字:

怎么把自定义菜单删除