詳解nodejs微信公眾號開發(fā)——1.接入微信公眾號
接入微信公眾號是開發(fā)的第一步,萬事開頭難,走好第一步,后面的路就更寬廣。
1.公眾平臺測試帳號的使用
登錄微信公眾平臺,由于很多開發(fā)人員并沒有認證的的微信公眾號,所以比較折中的方式是使用公眾平臺測試帳號來測試功能,其優(yōu)勢是能夠測試微信公眾號的絕大部分功能,不受認證門檻的限制。

進入測試賬號管理界面:
我們需要配置接口的信息,URL和Token是微信公眾平臺和本地開發(fā)服務(wù)建立連接的橋梁。

微信配置好后,掃面下方的測試號二維碼,即可以在手機上測試開發(fā)的功能。

2.驗證公眾號

一圖勝千言。接入公眾號時,微信公眾平臺需要驗證開發(fā)者的身份,向開發(fā)者填寫的URL發(fā)送一個GET請求,請求中包含4個參數(shù):signature、echostr、timestamp和nonce,收到該請求,我們需要做的事情:
- 將
token、timestamp和nonce三個參數(shù)進行字典排序; - 將三個字符串拼接成一個字符串進行sha1加密;
- 將加密后的字符串與
signature進行比較,如果相同,表示這個請求來自微信,我們直接原樣返回echostr的內(nèi)容,接入驗證成功。
3.搭建開發(fā)服務(wù)器
搭建開發(fā)服務(wù)器的方式有很多,如購買云服務(wù)器、使用花生殼、ngrok、localtunnel等。這里為了簡單起見采用localtunnel。先全局方式安裝localtunnel,
npm install -g lt
啟動lt
lt --port 8080 //對外暴露8080端口,可端口號可自己隨便設(shè)定
4.編寫代碼
好了,現(xiàn)在開始編寫app.js的代碼:
'use strict'
var Koa = require('koa');
var sha1 = require('sha1');
var config = {
wechat:{
appID:'...', //填寫你自己的appID
appSecret:'...', //填寫你自己的appSecret
token:'...' //填寫你自己的token
}
};
var app = new Koa();
app.use(function *(next){
var token = config.wechat.token;
var signature = this.query.signature;
var nonce = this.query.nonce;
var timestamp = this.query.timestamp;
var echostr = this.query.echostr;
var str = [token,timestamp,nonce].sort().join(''); //按字典排序,拼接字符串
var sha = sha1(str); //加密
this.body = (sha === signature)? echostr + '' : 'failed'; //比較并返回結(jié)果
});
app.listen(8080);
5.配置測試公眾號信息
代碼編寫完畢,現(xiàn)在開始正式配置啦。在終端中輸入lt --port 8080啟動localtunnel,得到對外可訪問的URL:

這個URL填寫到測試賬號管理界面中的URL,Token字段可隨意填寫,方便起見,就用wemovie吧!
填寫完畢,點擊提交,發(fā)現(xiàn)驗證成功,恭喜!

注:
- 由于localtunnel不是很穩(wěn)定,所以可能一開始點擊
提交提示的是黃條的配置失敗,需要多點一兩次按鈕; - 每次重啟程序,都需要重啟localtunnel獲取新的
URL,然后重新配置。(這就是選擇簡單付出的代價T_T)
到此為止,已經(jīng)打開了通向微信公眾號開發(fā)的大門,接下來,我們將繼續(xù)探索nodejs微信公眾號開發(fā)之旅。以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
node實現(xiàn)shell命令管理工具及commander.js學(xué)習(xí)
這篇文章主要為大家介紹了node實現(xiàn)shell命令管理工具及commander.js學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
Express實現(xiàn)Session身份認證的示例代碼
本文主要介紹了Express實現(xiàn)Session身份認證的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
node.js中express中間件body-parser的介紹與用法詳解
這篇文章主要給大家介紹了關(guān)于node.js中express中間件body-parser的相關(guān)資料,文章通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-05-05
Node.js利用js-xlsx處理Excel文件的方法詳解
這篇文章主要給大家介紹了關(guān)于Node.js利用js-xlsx處理Excel文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-07-07
基于NodeJS的前后端分離的思考與實踐(六)Nginx + Node.js + Java 的軟件棧部署實踐
關(guān)于前后端分享的思考,我們已經(jīng)有五篇文章闡述思路與設(shè)計。本文介紹淘寶網(wǎng)收藏夾將 Node.js 引入傳統(tǒng)技術(shù)棧的具體實踐。2014-09-09
Nodejs?Socket連接池及TCP?HTTP網(wǎng)絡(luò)模型詳解
這篇文章主要為大家介紹了Nodejs?Socket連接池及TCP?HTTP網(wǎng)絡(luò)模型,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
為nuxt項目寫一個面包屑cli工具實現(xiàn)自動生成頁面與面包屑配置
這篇文章主要介紹了為nuxt項目寫一個面包屑cli工具實現(xiàn)自動生成頁面與面包屑配置,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09

