微信公众平台消息接口开发 自定义菜单
【导语】微信绝对不再只是一款“通信工具”,正在向它擅长且有利可图的领域渗透。8月5日,微信5.0千呼万唤始出来。
这个版本原定于今天下午15:00正式发布。不过由于没能控制住苹果App Store的审核节奏,iOS版在今日上午提前爆出。经过试用,微信5.0虽然不是那么完美和优雅,但依然是一个强大的版本:以前,微信是一款沟通工具。现在,微信俨然自成一体。在携着微信沃卡与联通走到一起在国内找到安全感后,微信从5.0开始探索商业化,前途一片光明,不过依然有几座大山横在路上。
今天9-10点多,微信IOS版就出来了,我们也是立马就开始下载进行体验。
随后又得到消息微信公众平台也开始更新了,微信将公众帐号分为了订阅号和服务号,服务号与订阅号的区别明显在于消息的推送上。
服务号一个月只能推送一条消息,能申请自定义菜单
订阅号不能申请自定义菜单
我立马将足下软件学院的微信公众帐号申请为服务号,为的就是微信的自定义菜单。
好了 废话不多说。马上进入主题,微信自定义菜单的开发。
先看看效果:
具体的代码如下:
http请求方式:POST https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
ACCESS_TOKEN获取方式
http请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
appid 申请自定义菜单的时候给你的
appsecret 同上↑
注access_token对应于公众号是全局唯一的票据,重复获取将导致上次获取的access_token失效,有效期2个小时。
String url = "你的连接"; String responeJsonStr = "{\"button\":[ " + "{ \"name\":\"足下小V\"," + "\"sub_button\":[" + "{" + "\"type\":\"click\"," + "\"name\":\"就业学员\"," + "\"key\":\"sf\"}," + "{\"type\":\"click\"," + "\"name\":\"学员作品\"," + "\"key\":\"bd\"" + " }," + " {" + "\"type\":\"click\"," + "\"name\":\"来校路线\"," + "\"key\":\"4ds\"" + " }]" + " }," + "{ \"name\":\"百宝箱\"," + "\"sub_button\":[" + "{" + "\"type\":\"click\"," + "\"name\":\"足下微网\"," + "\"key\":\"sdfd\"}," + "{\"type\":\"click\"," + "\"name\":\"会员卡\"," + "\"key\":\"vdf\"" + " }," + " {" + "\"type\":\"click\"," + "\"name\":\"百宝箱\"," + "\"key\":\"bbb\"" + " }]" + " }," + "{ \"name\":\"快捷菜单\"," + "\"sub_button\":[" + "{" + "\"type\":\"click\"," + "\"name\":\"今日课表\"," + "\"key\":\"dgs\"}," + "{\"type\":\"click\"," + "\"name\":\"3G相册\"," + "\"key\":\"3d\"" + " }," + " {" + "\"type\":\"click\"," + "\"name\":\"留言墙\"," + "\"key\":\"dss\"" + " }]" + "}]" + " }"; //对菜单进行编码,UTF-8不会出现乱码问题 UTF8Encoding encoding = new UTF8Encoding(); byte[] data = encoding.GetBytes(responeJsonStr); HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url); //POst 提交方式 myRequest.Method = "POST"; myRequest.ContentType = "application/x-www-form-urlencoded"; myRequest.ContentLength = data.Length; Stream newStream = myRequest.GetRequestStream(); newStream.Write(data, 0, data.Length); newStream.Close(); HttpWebResponse response; Stream responseStream; StreamReader reader; string srcString; response = myRequest.GetResponse() as HttpWebResponse; responseStream = response.GetResponseStream(); reader = new System.IO.StreamReader(responseStream, Encoding.UTF8); //返回结果 正确的Json返回结果:{"errcode":0,"errmsg":"ok"} // 错误的Json返回结果:{"errcode":40018,"errmsg":"invalid button name size"} srcString = reader.ReadToEnd(); reader.Close(); Console.WriteLine(srcString); Console.Read();