摘要:打開中文網文檔打開微信開發者文檔三接入微信公眾平臺創建項目首先我們在電腦的任意磁盤上創建文件夾,命名隨意,我這命名為隨后在文件夾中創建兩個文件一個是,另一個為。接入驗證再次進入微信公眾平臺在左側菜單點擊基本配置,如圖點擊修改配置。
一、寫在前面的話
??Node.js是一個開放源代碼、跨平臺的JavaScript語言運行環境,采用Google開發的V8運行代碼,使用事件驅動、非阻塞和異步輸入輸出模型等技術來提高性能,可優化應用程序的傳輸量和規模。這些技術通常用于數據密集的事實應用程序。——來自維基百科
??最近花了差不多近一個月的時間去學習Node.js,由于它的代碼語言是 Javascript ,因此對于語法上就沒有過多的去研究,畢竟做過Web開發的程序員,很少有不會Javascript的。而寫這篇文章,也只是為了
如有不正確的地方,希望大家指正。
二、準備工作??在正式開始碼代碼之前,我們需要準備以下東西:
搭建 Node 環境。Node的安裝過程太過簡單,網上也有太多的教程,大家可以自行百度;
申請微信公眾號,同樣這里也不做介紹,大家自行百度。
服務器和域名。
打開 Node.js中文網文檔
打開 微信開發者文檔
三、接入微信公眾平臺 1.創建Node.js 項目??首先我們在電腦的任意磁盤上創建文件夾,命名隨意,我這命名為 wechat;
??隨后在文件夾中創建兩個文件,一個是config.json,另一個為app.js。如下圖所示:
PS:這里我的 IDE 是 VSCode,各位可隨意使用自己喜歡的 IDE。
??為了后續功能的擴展,我加入了Express框架,具體操作如下:
電腦打開運行界面,快捷鍵為:win+R,輸入cmd后回車,進入dos界面,輸入命令
npm install -g express
進行全局安裝;由于 Express 自 4.x 版本中將命令工具分離出來,因此還需要輸入下一個命令
npm install -g express-generator@4
安裝成功后,在dos界面中輸入以下 命令
express -h
結果如下圖所示:
什么?你的運行結果提示:express不是內部或外部命令。那你必須要檢查一下安裝 node.js 的時候有沒有添加環境變量。點擊解決express不是內部或外部命令問題
2.微信文檔步驟??如果在沒有考慮清楚之前,就開始碼代碼的話,這樣做是非常危險的。我們先打開微信文檔,點擊 開始開發 中的 接入指南,如圖:
跳過第一步,直接看第二步,如圖:
正如幫助文檔所說的那樣,我們總結以四個步驟:
獲取微信服務器Get請求的參數 signature、timestamp、nonce、echostr
將token、timestamp、nonce三個參數進行字典序排序
將三個參數字符串拼接成一個字符串進行sha1加密
開發者獲得加密后的字符串可與signature對比,標識該請求來源于微信
3.接入功能的實現?? 整理好思路后我們就按照上一節的步驟去實現。首先我們在打開 config.json 文件,輸入以下內容:
{ "token":"wechat" }
?? config.json 文件是我們程序的配置文件,在后面的文章中,我們會將程序名稱、微信定義的參數名稱、請求地址等配置內容存放在該文件中。
?? 打開 app.js 文件,該文件屬于我們程序的入口,在文件啟動及以后路由配置都是再次實現的,首先我們導入重要的模塊:
const express = require("express"), //express 框架 crypto = require("crypto"), //引入加密模塊 config = require("./config");//引入配置文件
上面的代碼不難理解,require 就是導入模塊的意思。這里主要針對我們自定義的config.json文件講解一下:
?"./" 表示與 app.js 在同一及目錄下,為什么要這么寫呢?原因很簡單就是在我們通過 npm 命令安裝模塊時,如果我們指定了全局安裝,也就是 -g,安裝后的文件則會保存在我們 node.js 安裝路徑下的 node_modules 文件夾中;同理,我們不指定全局安裝,安裝后的文件則會保存在我們安裝命令輸入時所在的文件夾根目錄下的 node_modules 文件夾中,此時如果沒有該文件,系統會自動創建。
?這里我們都是使用 require 去導入模塊的,node.js 怎么分辨系統模塊和我們自定義的模塊呢,聰明的你一定想到了,沒錯就是 "./" 這個,如果你不想用它的話,你也可以把自定義的模塊文件移到 node_modules 文件夾中。
? require 是通過模塊名稱去導入模塊文件的,因此在引入的時候不需要寫入文件的后綴名。如果兩個文件重名,但后綴名不同, require 會按照 Node.js 的加載優先級順序進行導入,即 js文件 > json文件 > node文件。
?實際上就是這么簡單,我們也就不再糾結這個問題,繼續下面的工作。
?? 實例 express 以及 創建服務器
//實例 express var app = express(); //用于處理所有進入 3000 端口 get 的連接請求 app.get("/",function(req,res){ //對請求連接返回內容 res.send("Hello Node.js"); }); //監聽3000端口 app.listen(3000);
??上面的代碼通過注釋,我們就能明白其意思,這里我就不再做細致的講解。再次進入 dos 界面,通過命令進入我們項目的文件的根目錄下,如圖:
輸入命令,啟動我們的Node.js項目
node app.js
啟動成功后,我們打開瀏覽器輸入地址:http://localhost:3000 訪問我們的node.js項目,如圖
小技巧 :
??在每次更改完 node.js 項目后,我們都需要先將 node.js停止(快捷鍵: Ctrl+C),然后再通過命令再次運行,這樣特別麻煩。這里我推薦使用 supervisor 工具,npm 安裝命令為:npm install -g supervisor。這樣我們啟動 node.js 項目命令改為 supervisor app.js,更改項目后只需要保存,刷新瀏覽器頁面就可以得到更改后的結果了。
??完成上面的工作后,我們就可以正式開始寫接入微信公眾平臺的主要代碼,廢話不多說直接貼代碼
const express = require("express"), //express 框架 crypto = require("crypto"), //引入加密模塊 config = require("./config");//引入配置文件 var app = express();//實例express框架 //用于處理所有進入 3000 端口 get 的連接請求 app.get("/",function(req,res){ //1.獲取微信服務器Get請求的參數 signature、timestamp、nonce、echostr var signature = req.query.signature,//微信加密簽名 timestamp = req.query.timestamp,//時間戳 nonce = req.query.nonce,//隨機數 echostr = req.query.echostr;//隨機字符串 //2.將token、timestamp、nonce三個參數進行字典序排序 var array = [config.token,timestamp,nonce]; array.sort(); //3.將三個參數字符串拼接成一個字符串進行sha1加密 var tempStr = array.join(""); const hashCode = crypto.createHash("sha1"); //創建加密類型 var resultCode = hashCode.update(tempStr,"utf8").digest("hex"); //對傳入的字符串進行加密 //4.開發者獲得加密后的字符串可與signature對比,標識該請求來源于微信 if(resultCode === signature){ res.send(echostr); }else{ res.send("mismatch"); } }); //監聽3000端口 app.listen(3000);4.部署項目
?? 完成了代碼后我們就可以把項目發布到外網上了,這里我用的是花生殼內網映射外網的軟件,各位可以隨意使用其他工具。
1.打開花生殼的軟件,點擊內網穿透:
2.點擊添加映射
3.配置映射
??由于微信只接受80端口,我們在映射類型選擇為 網站80端口;內網主機就是我們電腦的 IP 地址;內網端口號就是node.js的監聽端口;點擊確定后,就成功映射到外網了,可以通過花生殼提供的域名進行訪問。
??再次進入 微信公眾平臺
在左側菜單點擊基本配置,如圖:
點擊修改配置。其中服務器地址,就是我們外網映射的地址;令牌(Token)就是我們在 config.json 文件中 定義的 token 值;消息加密可以點擊隨機生成按鈕,當然你也可以隨便定義;消息加解密方式這塊可以隨便選擇,這里我就使用默認的,如圖:
??點擊提交按鈕,提示 提交成功,那么我就要祝賀你了
??你已經成功的步入了Node.js開發微信的開發的第一步。
?? 文章源代碼:https://github.com/SilenceHVK... 。對文章有不正確之處,請給予糾正。github源代碼請順手給個 Star,最后感謝您的閱讀。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/88753.html
摘要:消息推送也是微信公眾號開發更為有趣的功能,涉及到文本消息圖片消息語音消息視頻消息音樂消息以及圖文消息。在文件中創建文件用于消息的管理。 一、寫在前面的話 ??當用戶發送消息給公眾號時(或某些特定的用戶操作引發的事件推送時),會產生一個POST請求,開發者可以在響應包(Get)中返回特定XML結構,來對該消息進行響應。 ??消息推送也是微信公眾號開發更為有趣的功能,涉及到文本消息、圖片消...
摘要:主要用于封裝開發微信公眾平臺的所有方法。剩下的就是去微信公眾平臺接入驗證了,在上一篇文章中有詳細的教程,這里我就不再演示了三的獲取存儲及更新微信文檔步驟在開始碼代碼之前,我們依然是先理清實現的思路,在開始編寫實現代碼。 一、寫在前面的話 ??上一篇文章中,我們使用 Node.js 成功的實現了接入微信公眾平臺功能。在這篇文章中,我們將實現微信公眾平臺一個非常重要的參數 access_t...
摘要:一寫在前面的話上一篇文章中,我們使用成功的實現了的獲取存儲以及更新,這篇文章我們來實現微信的自定義菜單功能。二自定義微信菜單微信文檔步驟在開始碼代碼之前,我們依然是先理清實現的思路,再開始編寫實現代碼。 一、寫在前面的話 ??上一篇文章中,我們使用 Node.js 成功的實現了access_token 的獲取、存儲以及更新,這篇文章我們來實現微信的自定義菜單功能。showImg(htt...
摘要:在進行微信公眾平臺開發之前,需要先接入微信公眾平臺。后續我也還會更新一些關于微信公眾平臺開發的文章,歡迎關注。 在進行微信公眾平臺開發之前,需要先接入微信公眾平臺。具體的步驟在 公眾平臺開發者文檔-接入指南 已有詳細介紹,文檔中也提供了驗證服務器的 PHP 示例代碼。 本文主要提供了 Node.js 版本的驗證代碼,同時把步驟細化,讓開發者更方便地了解整個接入過程,對初學者更友好。 T...
摘要:以下這些項目,你拿來學習學習練練手。當你每個步驟都能做到很優秀的時候,你應該考慮如何組合這四個步驟,使你的爬蟲達到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學習不是一朝一夕的事情,建議多看看一些比較優秀的爬蟲的設計方案,比如說。 (一)如何學習Python 學習Python大致可以分為以下幾個階段: 1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變量、數據結構、語法...
閱讀 3924·2021-10-12 10:12
閱讀 2885·2021-09-10 11:18
閱讀 3672·2019-08-30 15:54
閱讀 2807·2019-08-30 15:53
閱讀 637·2019-08-30 13:54
閱讀 965·2019-08-30 13:21
閱讀 2259·2019-08-30 12:57
閱讀 1686·2019-08-30 11:10