摘要:一寫在前面的話上一篇文章中,我們使用成功的實現了的獲取存儲以及更新,這篇文章我們來實現微信的自定義菜單功能。二自定義微信菜單微信文檔步驟在開始碼代碼之前,我們依然是先理清實現的思路,再開始編寫實現代碼。
一、寫在前面的話
??上一篇文章中,我們使用 Node.js 成功的實現了access_token 的獲取、存儲以及更新,這篇文章我們來實現微信的自定義菜單功能。
1.微信文檔步驟
??在開始碼代碼之前,我們依然是先理清實現的思路,再開始編寫實現代碼。打開 微信幫助文檔 ,點擊左側菜單中的 自定義菜單,點擊其子菜單 自定義菜單創建接口,如圖:
??由上圖我們總結以下步驟:
自定義微信請求是以 https POST請求方式
數據是以 JSON 格式傳入
2.實現 https POST請求
??緊接著上一篇文章的代碼,源碼地址: https://github.com/SilenceHVK... ,克隆到本地文件中
git clone git@github.com:SilenceHVK/wechatByNode.git
??打開 wechat 文件夾中的 wechat.js 文件,并在 WeChat 構造函數內部添加 requestPost 方法
//用于處理 https Post請求方法 this.requestPost = function(url,data){ return new Promise(function(resolve,reject){ //解析 url 地址 var urlData = urltil.parse(url); //設置 https.request options 傳入的參數對象 var options={ //目標主機地址 hostname: urlData.hostname, //目標地址 path: urlData.path, //請求方法 method: "POST", //頭部協議 headers: { "Content-Type": "application/x-www-form-urlencoded", "Content-Length": Buffer.byteLength(data,"utf-8") } }; var req = https.request(options,function(res){ var buffer = [],result = ""; //用于監聽 data 事件 接收數據 res.on("data",function(data){ buffer.push(data); }); //用于監聽 end 事件 完成數據的接收 res.on("end",function(){ result = Buffer.concat(buffer).toString("utf-8"); resolve(result); }) }) //監聽錯誤事件 .on("error",function(err){ console.log(err); reject(err); }); //傳入數據 req.write(data); req.end(); }); }
??在上一篇文章中,我們使用到了 https 的 get 方法發。實際上 https 用于請求的底層方法則是 request 方法,而 get 方法 只是對它的一個封裝,但是 Node.js 卻沒有對 post 進行封裝,直到現在 Node.js 8.0 依然沒有。具體詳情請看 Node.js 中文文檔。
提示:???npm 提供了很多用于請求的工具包,比如 request ( 安裝命令 npm install request ) 等。這里我只是用系統包去做請求處理。
3.配置創建微信菜單的連接
??打開 項目文件中的 config.json 文件,在 apiURL 中添加配置:
"createMenu":"%scgi-bin/menu/create?access_token=%s"
4.微信菜單 JSON 格式
??完成了上面的工作后,我們就可以開始微信菜單的創建了。按照微信幫助中菜單示例格式,我們自己定義一個 JSON 格式:
{ "button":[ { "type":"view", "name":"hvkcoder", "url":"http://www.cnblogs.com/hvkcode/" }, { "type":"click", "name":"今日推薦", "key":"today_recommend" }, { "name":"小工具", "sub_button":[{ "type": "scancode_waitmsg", "name": "掃一掃", "key": "scancode" },{ "type": "pic_sysphoto", "name": "系統拍照發圖", "key": "take_photo" },{ "type": "location_select", "name": "發送位置", "key": "send_location" }] } ] }
并將它存放在 wechat 文件夾中的 menus.json 文件,如圖:
5.請求創建菜單API
??將 menus.json 文件在 wechat.js 文件中引用。這塊呢,我就直接在微信接入的方法中去做菜單的創建:
var that = this; this.getAccessToken().then(function(data){ //格式化請求連接 var url = util.format(that.apiURL.createMenu,that.apiDomain,data); //使用 Post 請求創建微信菜單 that.requestPost(url,JSON.stringify(menus)).then(function(data){ //將結果打印 console.log(data); }); });
??如果你目前用的是訂閱號的話,那么不好意思朋友,你在運行結果就會看到:
??錯誤意思是:api未經授權。騰訊本著“沒錢,玩你麻痹”的態度,指明訂閱號的朋友是不能通過 api 請求去自定義菜單的。
??但是不要傷心,因為騰訊依然很貼心的為我們準備測試公眾號,再次打開 微信幫助文檔,點擊右側的 開始開發,點擊其子菜單 接口測試號申請,如圖:
??使用手機端微信,掃描二維碼后,我們就得到了一個測試公眾號。
??其他的信息我們都不需要去管,主要去修改 appID 和 appsecret,并將 access_token.json 所保存的數據更改為:
{"access_token":"","expires_time":0}
隨后重新運行就可以了,是不是很簡單呢。
??掃面一下測試公眾號二維碼
??每次只需要對 menus.json 文件進行更改,重新請求。就能夠實現菜單的更改效果了。
??文章源代碼:https://github.com/SilenceHVK... 。對文章有不正確之處,請給予糾正。github源代碼請順手給個 Star,最后感謝您的閱讀。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/92118.html
摘要:消息推送也是微信公眾號開發更為有趣的功能,涉及到文本消息圖片消息語音消息視頻消息音樂消息以及圖文消息。在文件中創建文件用于消息的管理。 一、寫在前面的話 ??當用戶發送消息給公眾號時(或某些特定的用戶操作引發的事件推送時),會產生一個POST請求,開發者可以在響應包(Get)中返回特定XML結構,來對該消息進行響應。 ??消息推送也是微信公眾號開發更為有趣的功能,涉及到文本消息、圖片消...
摘要:打開中文網文檔打開微信開發者文檔三接入微信公眾平臺創建項目首先我們在電腦的任意磁盤上創建文件夾,命名隨意,我這命名為隨后在文件夾中創建兩個文件一個是,另一個為。接入驗證再次進入微信公眾平臺在左側菜單點擊基本配置,如圖點擊修改配置。 一、寫在前面的話 ??Node.js是一個開放源代碼、跨平臺的JavaScript語言運行環境,采用Google開發的V8運行代碼,使用事件驅動、非阻塞和異...
摘要:主要用于封裝開發微信公眾平臺的所有方法。剩下的就是去微信公眾平臺接入驗證了,在上一篇文章中有詳細的教程,這里我就不再演示了三的獲取存儲及更新微信文檔步驟在開始碼代碼之前,我們依然是先理清實現的思路,在開始編寫實現代碼。 一、寫在前面的話 ??上一篇文章中,我們使用 Node.js 成功的實現了接入微信公眾平臺功能。在這篇文章中,我們將實現微信公眾平臺一個非常重要的參數 access_t...
摘要:點見微信服務號端微課平臺企業級產品開發技術指南開發環境技術棧前端后臺管理系統后端采用框架特色技術微信公眾號開發微信授權登陸微信支付自定義菜單模版消息配置與推送圖片音頻處理直播文字圖片語言消息上傳文字圖片語言消息并發處理彈幕直播打賞定向提 21點見 - Vue + Node + MySql 微信服務號端微課平臺企業級產品開發技術指南 開發環境技術棧 前端:vue.js + vue-ro...
閱讀 1309·2021-11-15 11:37
閱讀 2564·2021-09-22 10:56
閱讀 3391·2021-09-06 15:11
閱讀 801·2021-08-31 09:45
閱讀 2897·2021-07-28 11:16
閱讀 1806·2019-08-30 15:44
閱讀 477·2019-08-30 13:22
閱讀 3344·2019-08-30 13:18