成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【Node.js 微信公眾號(hào)實(shí)戰(zhàn)】1.Node.js 接入微信公眾平臺(tái)開(kāi)發(fā)

winterdawn / 2086人閱讀

摘要:打開(kāi)中文網(wǎng)文檔打開(kāi)微信開(kāi)發(fā)者文檔三接入微信公眾平臺(tái)創(chuàng)建項(xiàng)目首先我們?cè)陔娔X的任意磁盤(pán)上創(chuàng)建文件夾,命名隨意,我這命名為隨后在文件夾中創(chuàng)建兩個(gè)文件一個(gè)是,另一個(gè)為。接入驗(yàn)證再次進(jìn)入微信公眾平臺(tái)在左側(cè)菜單點(diǎn)擊基本配置,如圖點(diǎn)擊修改配置。

一、寫(xiě)在前面的話
??Node.js是一個(gè)開(kāi)放源代碼、跨平臺(tái)的JavaScript語(yǔ)言運(yùn)行環(huán)境,采用Google開(kāi)發(fā)的V8運(yùn)行代碼,使用事件驅(qū)動(dòng)、非阻塞和異步輸入輸出模型等技術(shù)來(lái)提高性能,可優(yōu)化應(yīng)用程序的傳輸量和規(guī)模。這些技術(shù)通常用于數(shù)據(jù)密集的事實(shí)應(yīng)用程序?!獊?lái)自維基百科

??最近花了差不多近一個(gè)月的時(shí)間去學(xué)習(xí)Node.js,由于它的代碼語(yǔ)言是 Javascript ,因此對(duì)于語(yǔ)法上就沒(méi)有過(guò)多的去研究,畢竟做過(guò)Web開(kāi)發(fā)的程序員,很少有不會(huì)Javascript的。而寫(xiě)這篇文章,也只是為了

如有不正確的地方,希望大家指正。

二、準(zhǔn)備工作

??在正式開(kāi)始碼代碼之前,我們需要準(zhǔn)備以下東西:

搭建 Node 環(huán)境。Node的安裝過(guò)程太過(guò)簡(jiǎn)單,網(wǎng)上也有太多的教程,大家可以自行百度;

申請(qǐng)微信公眾號(hào),同樣這里也不做介紹,大家自行百度。

服務(wù)器和域名。

打開(kāi) Node.js中文網(wǎng)文檔

打開(kāi) 微信開(kāi)發(fā)者文檔

三、接入微信公眾平臺(tái) 1.創(chuàng)建Node.js 項(xiàng)目

??首先我們?cè)陔娔X的任意磁盤(pán)上創(chuàng)建文件夾,命名隨意,我這命名為 wechat;
??隨后在文件夾中創(chuàng)建兩個(gè)文件,一個(gè)是config.json,另一個(gè)為app.js。如下圖所示:

PS:這里我的 IDE 是 VSCode,各位可隨意使用自己喜歡的 IDE。

??為了后續(xù)功能的擴(kuò)展,我加入了Express框架,具體操作如下:

電腦打開(kāi)運(yùn)行界面,快捷鍵為:win+R,輸入cmd后回車,進(jìn)入dos界面,輸入命令

 npm install -g express

進(jìn)行全局安裝;由于 Express 自 4.x 版本中將命令工具分離出來(lái),因此還需要輸入下一個(gè)命令

npm install -g express-generator@4

安裝成功后,在dos界面中輸入以下 命令

express -h

結(jié)果如下圖所示:

什么?你的運(yùn)行結(jié)果提示:express不是內(nèi)部或外部命令。那你必須要檢查一下安裝 node.js 的時(shí)候有沒(méi)有添加環(huán)境變量。點(diǎn)擊解決express不是內(nèi)部或外部命令問(wèn)題

2.微信文檔步驟

??如果在沒(méi)有考慮清楚之前,就開(kāi)始碼代碼的話,這樣做是非常危險(xiǎn)的。我們先打開(kāi)微信文檔,點(diǎn)擊 開(kāi)始開(kāi)發(fā) 中的 接入指南,如圖:

跳過(guò)第一步,直接看第二步,如圖:

正如幫助文檔所說(shuō)的那樣,我們總結(jié)以四個(gè)步驟:

獲取微信服務(wù)器Get請(qǐng)求的參數(shù) signature、timestamp、nonce、echostr

將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序

將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密

開(kāi)發(fā)者獲得加密后的字符串可與signature對(duì)比,標(biāo)識(shí)該請(qǐng)求來(lái)源于微信

3.接入功能的實(shí)現(xiàn)

?? 整理好思路后我們就按照上一節(jié)的步驟去實(shí)現(xiàn)。首先我們?cè)诖蜷_(kāi) config.json 文件,輸入以下內(nèi)容:

{
    "token":"wechat"
}

?? config.json 文件是我們程序的配置文件,在后面的文章中,我們會(huì)將程序名稱、微信定義的參數(shù)名稱、請(qǐng)求地址等配置內(nèi)容存放在該文件中。
?? 打開(kāi) app.js 文件,該文件屬于我們程序的入口,在文件啟動(dòng)及以后路由配置都是再次實(shí)現(xiàn)的,首先我們導(dǎo)入重要的模塊:

const express = require("express"), //express 框架 
       crypto = require("crypto"),  //引入加密模塊
       config = require("./config");//引入配置文件

上面的代碼不難理解,require 就是導(dǎo)入模塊的意思。這里主要針對(duì)我們自定義的config.json文件講解一下:
?"./" 表示與 app.js 在同一及目錄下,為什么要這么寫(xiě)呢?原因很簡(jiǎn)單就是在我們通過(guò) npm 命令安裝模塊時(shí),如果我們指定了全局安裝,也就是 -g,安裝后的文件則會(huì)保存在我們 node.js 安裝路徑下的 node_modules 文件夾中;同理,我們不指定全局安裝,安裝后的文件則會(huì)保存在我們安裝命令輸入時(shí)所在的文件夾根目錄下的 node_modules 文件夾中,此時(shí)如果沒(méi)有該文件,系統(tǒng)會(huì)自動(dòng)創(chuàng)建。

?這里我們都是使用 require 去導(dǎo)入模塊的,node.js 怎么分辨系統(tǒng)模塊和我們自定義的模塊呢,聰明的你一定想到了,沒(méi)錯(cuò)就是 "./" 這個(gè),如果你不想用它的話,你也可以把自定義的模塊文件移到 node_modules 文件夾中。

? require 是通過(guò)模塊名稱去導(dǎo)入模塊文件的,因此在引入的時(shí)候不需要寫(xiě)入文件的后綴名。如果兩個(gè)文件重名,但后綴名不同, require 會(huì)按照 Node.js 的加載優(yōu)先級(jí)順序進(jìn)行導(dǎo)入,即 js文件 > json文件 > node文件。


?實(shí)際上就是這么簡(jiǎn)單,我們也就不再糾結(jié)這個(gè)問(wèn)題,繼續(xù)下面的工作。

?? 實(shí)例 express 以及 創(chuàng)建服務(wù)器

//實(shí)例 express
var app = express();
//用于處理所有進(jìn)入 3000 端口 get 的連接請(qǐng)求
app.get("/",function(req,res){
    //對(duì)請(qǐng)求連接返回內(nèi)容
    res.send("Hello Node.js");
});
//監(jiān)聽(tīng)3000端口
app.listen(3000);

??上面的代碼通過(guò)注釋,我們就能明白其意思,這里我就不再做細(xì)致的講解。再次進(jìn)入 dos 界面,通過(guò)命令進(jìn)入我們項(xiàng)目的文件的根目錄下,如圖:

輸入命令,啟動(dòng)我們的Node.js項(xiàng)目

node app.js

啟動(dòng)成功后,我們打開(kāi)瀏覽器輸入地址:http://localhost:3000 訪問(wèn)我們的node.js項(xiàng)目,如圖

小技巧 :
??在每次更改完 node.js 項(xiàng)目后,我們都需要先將 node.js停止(快捷鍵: Ctrl+C),然后再通過(guò)命令再次運(yùn)行,這樣特別麻煩。這里我推薦使用 supervisor 工具,npm 安裝命令為:npm install -g supervisor。這樣我們啟動(dòng) node.js 項(xiàng)目命令改為 supervisor app.js,更改項(xiàng)目后只需要保存,刷新瀏覽器頁(yè)面就可以得到更改后的結(jié)果了。

??完成上面的工作后,我們就可以正式開(kāi)始寫(xiě)接入微信公眾平臺(tái)的主要代碼,廢話不多說(shuō)直接貼代碼

const express = require("express"), //express 框架 
       crypto =  require("crypto"), //引入加密模塊
       config = require("./config");//引入配置文件

var app = express();//實(shí)例express框架

//用于處理所有進(jìn)入 3000 端口 get 的連接請(qǐng)求
app.get("/",function(req,res){
    //1.獲取微信服務(wù)器Get請(qǐng)求的參數(shù) signature、timestamp、nonce、echostr
    var signature = req.query.signature,//微信加密簽名
        timestamp = req.query.timestamp,//時(shí)間戳
            nonce = req.query.nonce,//隨機(jī)數(shù)
          echostr = req.query.echostr;//隨機(jī)字符串

    //2.將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序
    var array = [config.token,timestamp,nonce];
    array.sort();

    //3.將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密
    var tempStr = array.join("");
    const hashCode = crypto.createHash("sha1"); //創(chuàng)建加密類型 
    var resultCode = hashCode.update(tempStr,"utf8").digest("hex"); //對(duì)傳入的字符串進(jìn)行加密

    //4.開(kāi)發(fā)者獲得加密后的字符串可與signature對(duì)比,標(biāo)識(shí)該請(qǐng)求來(lái)源于微信
    if(resultCode === signature){
        res.send(echostr);
    }else{
        res.send("mismatch");
    }
});

//監(jiān)聽(tīng)3000端口
app.listen(3000);
4.部署項(xiàng)目

?? 完成了代碼后我們就可以把項(xiàng)目發(fā)布到外網(wǎng)上了,這里我用的是花生殼內(nèi)網(wǎng)映射外網(wǎng)的軟件,各位可以隨意使用其他工具。
1.打開(kāi)花生殼的軟件,點(diǎn)擊內(nèi)網(wǎng)穿透:

2.點(diǎn)擊添加映射

3.配置映射

??由于微信只接受80端口,我們?cè)谟成漕愋瓦x擇為 網(wǎng)站80端口;內(nèi)網(wǎng)主機(jī)就是我們電腦的 IP 地址;內(nèi)網(wǎng)端口號(hào)就是node.js的監(jiān)聽(tīng)端口;點(diǎn)擊確定后,就成功映射到外網(wǎng)了,可以通過(guò)花生殼提供的域名進(jìn)行訪問(wèn)。

5.接入驗(yàn)證

??再次進(jìn)入 微信公眾平臺(tái)
在左側(cè)菜單點(diǎn)擊基本配置,如圖:

點(diǎn)擊修改配置。其中服務(wù)器地址,就是我們外網(wǎng)映射的地址;令牌(Token)就是我們?cè)?config.json 文件中 定義的 token 值;消息加密可以點(diǎn)擊隨機(jī)生成按鈕,當(dāng)然你也可以隨便定義;消息加解密方式這塊可以隨便選擇,這里我就使用默認(rèn)的,如圖:

??點(diǎn)擊提交按鈕,提示 提交成功,那么我就要祝賀你了
??你已經(jīng)成功的步入了Node.js開(kāi)發(fā)微信的開(kāi)發(fā)的第一步。

?? 文章源代碼:https://github.com/SilenceHVK... 。對(duì)文章有不正確之處,請(qǐng)給予糾正。github源代碼請(qǐng)順手給個(gè) Star,最后感謝您的閱讀。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/88753.html

相關(guān)文章

  • Node.js 微信公眾號(hào)實(shí)戰(zhàn)】4.Node.js 微信消息管理

    摘要:消息推送也是微信公眾號(hào)開(kāi)發(fā)更為有趣的功能,涉及到文本消息圖片消息語(yǔ)音消息視頻消息音樂(lè)消息以及圖文消息。在文件中創(chuàng)建文件用于消息的管理。 一、寫(xiě)在前面的話 ??當(dāng)用戶發(fā)送消息給公眾號(hào)時(shí)(或某些特定的用戶操作引發(fā)的事件推送時(shí)),會(huì)產(chǎn)生一個(gè)POST請(qǐng)求,開(kāi)發(fā)者可以在響應(yīng)包(Get)中返回特定XML結(jié)構(gòu),來(lái)對(duì)該消息進(jìn)行響應(yīng)。 ??消息推送也是微信公眾號(hào)開(kāi)發(fā)更為有趣的功能,涉及到文本消息、圖片消...

    lewinlee 評(píng)論0 收藏0
  • Node.js 微信公眾號(hào)實(shí)戰(zhàn)】2.Node.js access_token的獲取、存儲(chǔ)及更新

    摘要:主要用于封裝開(kāi)發(fā)微信公眾平臺(tái)的所有方法。剩下的就是去微信公眾平臺(tái)接入驗(yàn)證了,在上一篇文章中有詳細(xì)的教程,這里我就不再演示了三的獲取存儲(chǔ)及更新微信文檔步驟在開(kāi)始碼代碼之前,我們依然是先理清實(shí)現(xiàn)的思路,在開(kāi)始編寫(xiě)實(shí)現(xiàn)代碼。 一、寫(xiě)在前面的話 ??上一篇文章中,我們使用 Node.js 成功的實(shí)現(xiàn)了接入微信公眾平臺(tái)功能。在這篇文章中,我們將實(shí)現(xiàn)微信公眾平臺(tái)一個(gè)非常重要的參數(shù) access_t...

    adam1q84 評(píng)論0 收藏0
  • Node.js 微信公眾號(hào)實(shí)戰(zhàn)】3.Node.js 自定義微信菜單

    摘要:一寫(xiě)在前面的話上一篇文章中,我們使用成功的實(shí)現(xiàn)了的獲取存儲(chǔ)以及更新,這篇文章我們來(lái)實(shí)現(xiàn)微信的自定義菜單功能。二自定義微信菜單微信文檔步驟在開(kāi)始碼代碼之前,我們依然是先理清實(shí)現(xiàn)的思路,再開(kāi)始編寫(xiě)實(shí)現(xiàn)代碼。 一、寫(xiě)在前面的話 ??上一篇文章中,我們使用 Node.js 成功的實(shí)現(xiàn)了access_token 的獲取、存儲(chǔ)以及更新,這篇文章我們來(lái)實(shí)現(xiàn)微信的自定義菜單功能。showImg(htt...

    Barry_Ng 評(píng)論0 收藏0
  • 微信公眾平臺(tái)開(kāi)發(fā)接入指南

    摘要:在進(jìn)行微信公眾平臺(tái)開(kāi)發(fā)之前,需要先接入微信公眾平臺(tái)。后續(xù)我也還會(huì)更新一些關(guān)于微信公眾平臺(tái)開(kāi)發(fā)的文章,歡迎關(guān)注。 在進(jìn)行微信公眾平臺(tái)開(kāi)發(fā)之前,需要先接入微信公眾平臺(tái)。具體的步驟在 公眾平臺(tái)開(kāi)發(fā)者文檔-接入指南 已有詳細(xì)介紹,文檔中也提供了驗(yàn)證服務(wù)器的 PHP 示例代碼。 本文主要提供了 Node.js 版本的驗(yàn)證代碼,同時(shí)把步驟細(xì)化,讓開(kāi)發(fā)者更方便地了解整個(gè)接入過(guò)程,對(duì)初學(xué)者更友好。 T...

    luodongseu 評(píng)論0 收藏0
  • Python爬蟲(chóng)學(xué)習(xí)路線

    摘要:以下這些項(xiàng)目,你拿來(lái)學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個(gè)步驟都能做到很優(yōu)秀的時(shí)候,你應(yīng)該考慮如何組合這四個(gè)步驟,使你的爬蟲(chóng)達(dá)到效率最高,也就是所謂的爬蟲(chóng)策略問(wèn)題,爬蟲(chóng)策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲(chóng)的設(shè)計(jì)方案,比如說(shuō)。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個(gè)階段: 1.剛上手的時(shí)候肯定是先過(guò)一遍Python最基本的知識(shí),比如說(shuō):變量、數(shù)據(jù)結(jié)構(gòu)、語(yǔ)法...

    liaoyg8023 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<