微信公众平台服务号以及之前成功申请内测资格的订阅号都具有自定义菜单的功能。开发者可利用该功能为公众账号的会话界面底部增加自定义菜单,用户点击菜单中的选项,可以调出相应的回复信息或网页链接。自定义菜单接口将为公众账号的信息展示空间提供更多可能性。本文将针对自定义菜单做简单的开发应用,
开发者获取使用凭证后,可以使用该凭证对公众账号的自定义菜单进行创建、查询和删除等操作。 自定义菜单接口可实现以下类型按钮:
click(点击事件):
view(访问网页):
创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后,再次关注,则可以看到创建后的效果。
文档地址:http://mp.weixin.qq.com/wiki/index.php?title=%E8%87%AA%E5%AE%9A%E4%B9%89%E8%8F%9C%E5%8D%95%E6%8E%A5%E5%8F%A3
3.1 获取appid 和appsecret
在 微信公众平台 > 高级功能 > 开发模式中找到appid 和appsecret。
3.2 使用appid 和appsecret 向微信凭证获取接口请求access_token
请求地址:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
请求参数说明:
获取access_token填写client_credential
第三方用户唯一凭证
第三方用户唯一凭证密钥,既appsecret
返回说明:
正确的Json返回结果:
{"access_token":"ACCESS_TOKEN","expires_in":7200}
返回参数说明:
access_token:获取到的凭证
expires_in:凭证有效时间,单位:秒
3.3 具体实现
a. 打印出格式
<?<span php </span><span $APPID</span>="wxdxxxxxxxxxxxxxxx"<span ; </span><span $APPSECRET</span>="96xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"<span ; </span><span $TOKEN_URL</span>="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".<span $APPID</span>."&secret=".<span $APPSECRET</span><span ; </span><span $json</span>=<span file_get_contents</span>(<span $TOKEN_URL</span><span ); </span><span $result</span>=json_decode(<span $json</span>,<span true</span><span ); </span><span print_r</span>(<span $result</span><span ); </span>?>
结果如下:
b. 获取access_token
<?<span php </span><span $APPID</span>="wxdxxxxxxxxxxxxxxx"<span ; </span><span $APPSECRET</span>="96xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"<span ; </span><span $TOKEN_URL</span>="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".<span $APPID</span>."&secret=".<span $APPSECRET</span><span ; </span><span $json</span>=<span file_get_contents</span>(<span $TOKEN_URL</span><span ); </span><span $result</span>=json_decode(<span $json</span>,<span true</span><span ); </span><span $ACC_TOKEN</span>=<span $result</span>['access_token'<span ]; </span><span echo</span> <span $ACC_TOKEN</span><span ; </span>?>
注:access_token对应于公众号是全局唯一的票据,重复获取将导致上次获取的access_token失效。
方法:通过POST一个特定结构体,实现在微信客户端创建自定义菜单。
请求地址:https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
<span { "button":[ { "name":"公共查询", "sub_button":[ { "type":"click", "name":"天气查询", "key":"tianQi" }, { "type":"click", "name":"公交查询", "key":"gongJiao" }, { "type":"click", "name":"翻译", "key":"fanYi" }] }, { "name":"苏州本地", "sub_button":[ { "type":"click", "name":"爱上苏州", "key":"loveSuzhou" }, { "type":"click", "name":"苏州景点", "key":"suzhouScenic" }, { "type":"click", "name":"苏州美食", "key":"suzhouFood" }, { "type":"click", "name":"住在苏州", "key":"liveSuzhou" }] }, { "type":"click", "name":"联系我们", "key":"lianxiUs" }] }</span>
示例说明:
菜单结构及说明:
<span { "button":[ //button定义该结构为一个菜单 { "name":"分支主菜单名", "sub_button":[ //sub_button定义子菜单 { "type":"click", //按钮类型 "name":"分支子菜单名1", //菜单名称 "key":"loveSuzhou" //菜单key值 }, { "type":"click", "name":"分支子菜单名2", "key":"liveSuzhou" }] }, //菜单之间用 , 分隔 { "type":"click", "name":"独立菜单", "key":"lianxiUs" }] }</span>
返回说明:
正确的Json返回结果:
{"errcode":0,"errmsg":"ok"}
提交菜单:
通过curl 提交以上的菜单数据,代码如下:
<span $MENU_URL</span>="https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".<span $ACC_TOKEN</span><span ; </span><span $ch</span> =<span curl_init(); curl_setopt(</span><span $ch</span>, CURLOPT_URL, <span $MENU_URL</span><span ); curl_setopt(</span><span $ch</span>, CURLOPT_CUSTOMREQUEST, "POST"<span ); curl_setopt(</span><span $ch</span>, CURLOPT_SSL_VERIFYPEER, <span FALSE</span><span ); curl_setopt(</span><span $ch</span>, CURLOPT_SSL_VERIFYHOST, <span FALSE</span><span ); curl_setopt(</span><span $ch</span>, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'<span ); curl_setopt(</span><span $ch</span>, CURLOPT_FOLLOWLOCATION, 1<span ); curl_setopt(</span><span $ch</span>, CURLOPT_AUTOREFERER, 1<span ); curl_setopt(</span><span $ch</span>, CURLOPT_POSTFIELDS, <span $data</span><span ); curl_setopt(</span><span $ch</span>, CURLOPT_RETURNTRANSFER, <span true</span><span ); </span><span $info</span> = curl_exec(<span $ch</span><span ); </span><span if</span> (curl_errno(<span $ch</span><span )) { </span><span echo</span> 'Errno'.curl_error(<span $ch</span><span ); } curl_close(</span><span $ch</span><span ); </span><span var_dump</span>(<span $info</span>);
运行结果:
测试结果:
菜单创建成功。
查询当前使用的自定义菜单结构。
请求地址:https://api.weixin.qq.com/cgi-bin/menu/get?access_token=ACCESS_TOKEN
curl 代码如下:
<span $MENU_URL</span>="https://api.weixin.qq.com/cgi-bin/menu/get?access_token=".<span $ACC_TOKEN</span><span ; </span><span $cu</span> =<span curl_init(); curl_setopt(</span><span $cu</span>, CURLOPT_URL, <span $MENU_URL</span><span ); curl_setopt(</span><span $cu</span>, CURLOPT_RETURNTRANSFER, 1<span ); </span><span $menu_json</span> = curl_exec(<span $cu</span><span ); </span><span $menu</span> = json_decode(<span $menu_json</span><span ); curl_close(</span><span $cu</span><span ); </span><span echo</span> <span $menu_json</span>;
取消当前使用的自定义菜单。
请求地址:https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=ACCESS_TOKEN
curl 代码如下:
<span $MENU_URL</span>="https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=".<span $ACC_TOKEN</span><span ; </span><span $cu</span> =<span curl_init(); curl_setopt(</span><span $cu</span>, CURLOPT_URL, <span $MENU_URL</span><span ); curl_setopt(</span><span $cu</span>, CURLOPT_RETURNTRANSFER, 1<span ); </span><span $info</span> = curl_exec(<span $cu</span><span ); </span><span $res</span> = json_decode(<span $info</span><span ); curl_close(</span><span $cu</span><span ); </span><span if</span>(<span $res</span>->errcode == "0"<span ){ </span><span echo</span> "菜单删除成功"<span ; }</span><span else</span><span { </span><span echo</span> "菜单删除失败"<span ; }</span>
运行结果:
测试结果:
菜单删除成功。
七、完整代码获取
请到QQ群213260412共享里下载使用。
八、关注
请关注 卓锦苏州 微信公众帐号,卓锦苏州 基于SAE 平台开发,针对于主流的微信功能进行开发测试。
您可以关注 卓锦苏州 公众帐号进行功能测试,以及获取新的应用开发。
1. 登录微信客户端,朋友们 -> 添加朋友 -> 搜号码 -> zhuojinsz,查找并关注。
2. 扫描二维码:
卓锦苏州菜单功能:
目前菜单具体功能还在开发之中,会陆续更新,敬请期待。。。
We Believe, Great People Share Knowledge...

phpsessionstrackuserdataacrossmultiplepagerequestsusingauniqueIdStoredInAcookie.here'showtomanageThemeffectionaly:1)startAsessionWithSessionWwithSession_start()和stordoredAtain $ _session.2)

在PHP中,遍歷會話數據可以通過以下步驟實現:1.使用session_start()啟動會話。 2.通過foreach循環遍歷$_SESSION數組中的所有鍵值對。 3.處理複雜數據結構時,使用is_array()或is_object()函數,並用print_r()輸出詳細信息。 4.優化遍歷時,可採用分頁處理,避免一次性處理大量數據。這將幫助你在實際項目中更有效地管理和使用PHP會話數據。

會話通過服務器端的狀態管理機制實現用戶認證。 1)會話創建並生成唯一ID,2)ID通過cookies傳遞,3)服務器存儲並通過ID訪問會話數據,4)實現用戶認證和狀態管理,提升應用安全性和用戶體驗。

Tostoreauser'snameinaPHPsession,startthesessionwithsession_start(),thenassignthenameto$_SESSION['username'].1)Usesession_start()toinitializethesession.2)Assigntheuser'snameto$_SESSION['username'].Thisallowsyoutoaccessthenameacrossmultiplepages,enhanc

PHPSession失效的原因包括配置錯誤、Cookie問題和Session過期。 1.配置錯誤:檢查並設置正確的session.save_path。 2.Cookie問題:確保Cookie設置正確。 3.Session過期:調整session.gc_maxlifetime值以延長會話時間。

在PHP中調試會話問題的方法包括:1.檢查會話是否正確啟動;2.驗證會話ID的傳遞;3.檢查會話數據的存儲和讀取;4.查看服務器配置。通過輸出會話ID和數據、查看會話文件內容等方法,可以有效診斷和解決會話相關的問題。

多次調用session_start()會導致警告信息和可能的數據覆蓋。 1)PHP會發出警告,提示session已啟動。 2)可能導致session數據意外覆蓋。 3)使用session_status()檢查session狀態,避免重複調用。

在PHP中配置會話生命週期可以通過設置session.gc_maxlifetime和session.cookie_lifetime來實現。 1)session.gc_maxlifetime控制服務器端會話數據的存活時間,2)session.cookie_lifetime控制客戶端cookie的生命週期,設置為0時cookie在瀏覽器關閉時過期。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

WebStorm Mac版
好用的JavaScript開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。