最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js開發(fā)第三方微信公眾平臺

 更新時(shí)間:2017年06月05日 08:57:34   作者:H_VK  
這篇文章主要介紹了Node.js開發(fā)第三方微信公眾平臺的相關(guān)資料,需要的朋友可以參考下

一、寫在前面的話

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

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



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

二、準(zhǔn)備工作

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

搭建 Node 環(huán)境。Node的安裝過程太過簡單,網(wǎng)上也有太多的教程,大家可以自行百度;申請微信公眾號,同樣這里也不做介紹,大家自行百度。服務(wù)器和域名。打開Node.js中文網(wǎng)文檔 打開 微信開發(fā)者文檔 三、接入微信公眾平臺 1.創(chuàng)建Node.js 項(xiàng)目

  首先我們在電腦的任意磁盤上創(chuàng)建文件夾,命名隨意,我這命名為 wechat;

  隨后在文件夾中創(chuàng)建兩個(gè)文件,一個(gè)是config.json,另一個(gè)為app.js。如下圖所示:

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

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

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

 npm install -g express

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

npm install -g express-generator@4

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

express -h

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

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

2.微信文檔步驟

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

跳過第一步,直接看第二步,如圖:

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

獲取微信服務(wù)器Get請求的參數(shù) signature、timestamp、nonce、echostr 將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序?qū)⑷齻€(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信 3.接入功能的實(shí)現(xiàn)

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

{
 "token":"wechat"
}
   config.json 文件是我們程序的配置文件,在后面的文章中,我們會將程序名稱、微信定義的參數(shù)名稱、請求地址等配置內(nèi)容存放在該文件中。

   打開 app.js 文件,該文件屬于我們程序的入口,在文件啟動及以后路由配置都是再次實(shí)現(xiàn)的,首先我們導(dǎo)入重要的模塊:

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

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

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


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

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

//實(shí)例 express
var app = express();
//用于處理所有進(jìn)入 3000 端口 get 的連接請求
app.get('/',function(req,res){
 //對請求連接返回內(nèi)容
 res.send("Hello Node.js");
});
//監(jiān)聽3000端口
app.listen(3000);
  上面的代碼通過注釋,我們就能明白其意思,這里我就不再做細(xì)致的講解。再次進(jìn)入 dos 界面,通過命令進(jìn)入我們項(xiàng)目的文件的根目錄下,如圖:


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

node app.js

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

小技巧 :

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

  完成上面的工作后,我們就可以正式開始寫接入微信公眾平臺的主要代碼,廢話不多說直接貼代碼

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

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

//用于處理所有進(jìn)入 3000 端口 get 的連接請求
app.get('/',function(req,res){
 //1.獲取微信服務(wù)器Get請求的參數(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'); //對傳入的字符串進(jìn)行加密

 //4.開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信
 if(resultCode === signature){
  res.send(echostr);
 }else{
  res.send('mismatch');
 }
});

//監(jiān)聽3000端口
app.listen(3000);

4.部署項(xiàng)目

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

1.打開花生殼的軟件,點(diǎn)擊內(nèi)網(wǎng)穿透:


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


3.配置映射


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

5.接入驗(yàn)證

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

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

  點(diǎn)擊提交按鈕,提示 提交成功,那么我就要祝賀你了

你已經(jīng)成功的步入了Node.js開發(fā)微信的開發(fā)的第一步。

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

相關(guān)文章

  • 利用Node.js+Koa框架實(shí)現(xiàn)前后端交互的方法

    利用Node.js+Koa框架實(shí)現(xiàn)前后端交互的方法

    這篇文章主要給大家介紹了利用Node.js+Koa框架實(shí)現(xiàn)前后端交互的方法,文中介紹的非常詳細(xì),對大家具有一定的參考價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-02-02
  • nodejs中fs模塊三種讀寫文件方法的使用區(qū)別

    nodejs中fs模塊三種讀寫文件方法的使用區(qū)別

    Node.js的fs模塊有多種文件操作API,readFile、read、createReadStream讀取文件,writeFile、write、createWriteStream寫入文件,readFile和writeFile將文件寫入緩存區(qū),適合小文件操作,read和write分步驟讀寫,適合大文件,createReadStream和createWriteStream通過流處理文件
    2024-10-10
  • Nodejs-child_process模塊詳細(xì)介紹

    Nodejs-child_process模塊詳細(xì)介紹

    Node.js的child進(jìn)程模塊允許創(chuàng)建并行任務(wù),提高應(yīng)用性能,介紹了exec、execFile、spawn、fork等方法,解釋了它們的使用場景和優(yōu)勢,通過子進(jìn)程模塊,可以執(zhí)行外部命令、腳本或創(chuàng)建新的Node.js實(shí)例,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • 詳解Node.js一行命令上傳本地文件到服務(wù)器

    詳解Node.js一行命令上傳本地文件到服務(wù)器

    這篇文章主要介紹了Node.js一行命令上傳本地文件到服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Node.js中DNS模塊學(xué)習(xí)總結(jié)

    Node.js中DNS模塊學(xué)習(xí)總結(jié)

    本篇文章給大家詳細(xì)介紹了Node.js中DNS模塊的相關(guān)知識點(diǎn),以及相關(guān)的實(shí)例代碼做了分享,有興趣的朋友參考下。
    2018-02-02
  • node schedule實(shí)現(xiàn)定時(shí)任務(wù)的示例代碼

    node schedule實(shí)現(xiàn)定時(shí)任務(wù)的示例代碼

    實(shí)際工作中,可能會遇到定時(shí)清除某個(gè)文件夾內(nèi)容,本文主要介紹了node schedule實(shí)現(xiàn)定時(shí)任務(wù)的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • 詳解NodeJs項(xiàng)目 CentOs linux服務(wù)器線上部署

    詳解NodeJs項(xiàng)目 CentOs linux服務(wù)器線上部署

    這篇文章主要介紹了NodeJs項(xiàng)目 CentOs linux服務(wù)器線上部署,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 解決使用node命令提示:'node'不是內(nèi)部或外部命令,也不是可運(yùn)行的程序

    解決使用node命令提示:'node'不是內(nèi)部或外部命令,也不是可運(yùn)行的程序

    最近在工作中遇到了個(gè)常見的問題,分享給大家,這篇文章主要給大家介紹了關(guān)于如何解決使用node命令提示:'node'不是內(nèi)部或外部命令,也不是可運(yùn)行的程序的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • 使用node.js半年來總結(jié)的 10 條經(jīng)驗(yàn)

    使用node.js半年來總結(jié)的 10 條經(jīng)驗(yàn)

    從3月初來到帝都某創(chuàng)業(yè)公司的服務(wù)器團(tuán)隊(duì)實(shí)習(xí),到現(xiàn)在已接近半年的時(shí)間。PS: 已轉(zhuǎn)正,服務(wù)器端用的 Node。
    2014-08-08
  • 從零開始學(xué)習(xí)Node.js系列教程三:圖片上傳和顯示方法示例

    從零開始學(xué)習(xí)Node.js系列教程三:圖片上傳和顯示方法示例

    這篇文章主要介紹了Node.js圖片上傳和顯示方法,結(jié)合實(shí)例形式分析了nodejs基于http傳輸圖片文件及顯示圖片的相關(guān)實(shí)現(xiàn)步驟與操作技巧,需要的朋友可以參考下
    2017-04-04

最新評論

合川市| 岳阳县| 崇义县| 府谷县| 深圳市| 西峡县| 谷城县| 牙克石市| 沂水县| 忻城县| 扬州市| 阜平县| 三原县| 平果县| 黑龙江省| 唐海县| 商水县| 井陉县| 济宁市| 晋中市| 宜丰县| 图片| 洞口县| 华池县| 云和县| 澄迈县| 娱乐| 濉溪县| 襄樊市| 会同县| 龙里县| 富源县| 马关县| 大宁县| 临西县| 天气| 高雄县| 林芝县| 武定县| 泾源县| 内乡县|