微信自定义菜单开发教程

上传人:新** 文档编号:557167112 上传时间:2023-05-07 格式:DOCX 页数:13 大小:212.16KB
返回 下载 相关 举报
微信自定义菜单开发教程_第1页
第1页 / 共13页
微信自定义菜单开发教程_第2页
第2页 / 共13页
微信自定义菜单开发教程_第3页
第3页 / 共13页
微信自定义菜单开发教程_第4页
第4页 / 共13页
微信自定义菜单开发教程_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《微信自定义菜单开发教程》由会员分享,可在线阅读,更多相关《微信自定义菜单开发教程(13页珍藏版)》请在金锄头文库上搜索。

1、自定义菜单开发模式详解一、如何获取凭证(token )话说微信的接口指南一直做得不咋地,这边鼓励大家都转服务号,这边给的说明 文档除了码农真没几个能看明白的,一点也不考虑大量的小白运营者,干脆叫指 北算了。牢骚完毕先说下开发自定义菜单第一步要做的就是获取凭证,即access_token, 这步非常重要,微信接下来会开放更多的开发接口,开发者要操作接口都要通过 这个access_token,而这个凭证是需要通过接口来生成的,并且是有失效时间 的。生成凭证需要两个第三方的固定ID和秘钥,进入开发模式的页面,已经获取到 自定义菜单接口权限的朋友会看到下图:使用公众平台接口进行开发便用址寂乎皆的开舞口

2、.直众号可在自島服务豁上接收用户帥信渭息,井可拱需问靈.此外,我衍还提供 了更苓更离皱的功能和体验.如会话界面的自定賈臬单.毅取更多类型園胃思铮.你已成为开发者接口配信患極改URLToken:Appld:AppSecret除了原来接口通讯 url和自己设置的token多了两个新字段即 Appid和 AppSecret,也就是第三方的固定ID和秘钥,有了这个就能通过接口程序获取 到临时的凭证。将这两个id放到代码如下图位置:private Smc=;private $ch=;private $AppId=private $AppSecret=/ / 411 JLk /+nir WtTfuncti

3、on _constiruct() $七his-mc memcache_init(); $thie-ch - curl_init();这段代码主要是初始化了 memcache和curl类,分别是缓存和抓取用的,同时 将ID和秘钥也赋值了。接下来就是通过接口获取token,代码如下图:function get_wce&5_jbQken()ifm j jcc.ua d-)Saccegs_tcfcen $thi3-inc-gQt.( . :j :jccen r.o:- n ;alfl打我 ttoken.贞別贮爼为 https : /flLpd weixin . qq - ccm/Cg i-bin/to

4、ken curl_setopt ($th 1b-cIirCURLOPT_URL, 釘-fps; /apilidn.gq+con?cgi-bln/token?grwittype cliftnt_CTfldentiaT*oppid $thia-AppTd. secret- $thiB-AppSecrech)ch);exitf slew/W页面嵐功,先枫醸的豔挺转换成數爼;$rstjBon_dscode($rstr );/汕琨攪畛败打印语泯代躅 iferrcode 段 lu) JEEtoJwn败 i 错渥提示为:$rst.措俱代码骗号为:$rat erroods4 fecho fbrxa h:rci

5、:=http:/rtiD.wLMXin.qq.aoffl/wik丄/indiaic.ptipTtltlm=(EBnF%941E5%SB9E%e7A0tBl%E8AF%B4%E6*9eeE 1 target _blankH =雷溟代玛对隙歳小日 exit;字/丿檯祝睨功剤和14期时郦B萍else 彳5wcesa_taken-5r&t( a匚匚1:mG-5e!t np_aQceBS_tpKenh rf 5expire5_in-fiQ) f这是一个获取接口的函数,函数运行时首先是监测缓存中是否已经有toke n,如 果有则直接从缓存中取,要知道官方限制每天只能获取100次token,所以做个缓存很有

6、必要。如果缓存中没有token或者缓存时间过期,那么就使用curl这个类发送Appid 和AppSecret到接口获取token, curl_setopt是定义抓取属性的,curl_exec是 运行抓取,想了解相关的可以百度一下。获取的到是一个json格式数据,使用json_decode转化为数组,然后判断是否 获取到,如果没有则输出错误信息,获取成功则将该token保存到缓存中,同时 函数返回token退出。这样我们就很方便的拿到了凭证。二、自定义菜单创建、查询和删除拿到access_token以后我们就可以开始进行自定义菜单操作了,首先是创建自 定义菜单,官方说明很简单“通过POST 个特

7、定结构体,实现在微信客户端 创建自定义菜单。”然后有一个特定结构体的示例,如下图:buttonntypeB:nclickname:今日歌曲:keyVlOOlJODAY.MUSlC4,” type 丫 click”,Fa me”:歌手简介:Hke/:HV1001_TODAY_SINGERLFameT菜单:lub_bu ttonn:MtypeM:Mclkk;nnamen/hello wo rd nkeyw:V10Cl_HELLOWORLDn ,typeYdick;” name”:赞一下我们;nkeyiV10Gl_GOODB还有一些关于这个特定结构体字段的说明:参数是否必须说明button是按钮数组

8、,按钮个数应为23个sub_bu tton否子按钮数组,按钮个数应为25个type是按钮类型,目前有click类型n ame是按钮描述,既按钮名字,不超过16个字节,子菜单不超过40个字节key类型为click必须按钮KEY值,用于消息接口(event类型)推送,不超过128字节我估计有不少朋友会看的头晕,一是这个特定结构体传输过去时应该赋值给那个 变量?二是这个结构体如何生成?首先传输过去不需要任何变量参数,其次这就 是一个json格式数据,我们可以用数组来转换生成。创建菜单的函数非常简单,如下图:elsefunct ion create_new_menu ($jnenu)echo 盘匸对I

9、echo curl_eiTQr (;/如舉创理处敗打印般代 if 七:-,-cng 1 C)在这里curl抓取页面的方式不是get而是post,所以属性会有所不同,但是主 要是接口地址和发送的特定结构体,这里的特定结构体是外面传递进来的值,变 量名为$me nu。主要来看下我做的简易版的菜单生成器,直接在浏览器里打开make_me nu.php 就可以看到如下图(注意修改下代码里的Appid和AppSecret):如果填写了子菜单则主菜单的关键字无效主菜单一名称:WeMedia主菜单一关键字;WeMedia 联盟介绍,WeMedia_001WeMedia开放日,We MM i直.必2 毎日一曲

10、.WeMedaaO菜 L母格式:菜单名,关键字,例如;每日一歌潭,多个子菜单换行即可,最多5个子菜主菜单二名称:广告刊例主菜单二关键字:广告刊例,AcJ_O广告秦例之微gsAdl广告秦例之步步高FAd_2子菜单二”4格式:篥第名关键字,例如;每日一歌M多个子菜单换行即可.最多5个子菜主菜单三名称;联累我彳主菜单三关键字:Contact本来想做些JS效果的,但是这个菜单结构本来就很简单,就不多事了,上图三个区块分别对应三个底栏的主菜单,每个区块都有主菜单名、关键字和子菜单。在说上面的菜单前先讲下自定义菜单的规则,无论是主菜单还是子菜单目前都是 由最多三个属性组成的,即名称、关键字、类型(目前只有

11、click,进行点击操 作时会将关键字发送给微信后台),其中主菜单如果有子菜单的话,属性就两个, 即名称、子菜单(点击操作时显示子菜单)。如上所述我设计的这个简易版生成器忽略了类型选择,如果主菜单有子菜单时主 菜单关键字其实是不记录的,子菜单没什么可变化的就两个属性名称和关键字, 类型默认为click。当然未来会有新的菜单类型出来,比如地理位置,在这个基础改动下也非常方便 就能使用。下面详细说下这个菜单的输入框要填写什么。主菜单名称:底栏显示的名字,建议4-5个中文字或者8-10个英文字符,否则会 名称显示会出现省略号;主菜单关键字:主菜单向后台发送的关键字,如果该菜单有子菜单则关键字失效。子

12、菜单:子菜单我使用了 textarea,每个子菜单格式为“菜单名,关键字”,用 换行来区分多个子菜单项。表单提交后程序将进行处理,如图:for($il;$ i/初始化单个菜单数组Staomenu-ar ray ();$menu name$ POST main menu H .$i.M name11;如果主菓单舖存在一- 一if ($mjenu_name)/如果有子菜单1 ($_POST N $i )$temp_sub_menu=array ();Ssubmenuexplodet AnH,$.POST PubjmemiJ$!); foreach($ sub-menu as $value)$val

13、ueexplode( J 9 $value); if ($valueOJ & $valuel)$ temp_sub_menu =array(type11 click11 funameN-urLencode($value0 F ” key1 f =uxlencod ($valu (1)判断子菜单是否是5个if (count ($temj_sub_meiiu) 5)echo scriptalert( 1 子菜单最多5个 1 );history.back() ; exit;tenjenuarray (n nan -urlencode ($menu_name),H sub_bu tton ”=$ gnp_sub_meiw); else$temp_meiHiNaLrray (M typen=click1,9H name urlencode ($menu_name) 9k”urleiicode($_POSlf 耐_砂11_”$丄 ”_k” ) );$menuN but ton H $ten)_inen.uyik_menunew make nu(); ik_menu-del_jnenu ();ikmenu-create new menu(urIdecode(json encode($menu9triu );ho n alert单创建成功,请禽公妹账粤取消詬关注Wi! 1 );history

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号