欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

nodejs微信開發(fā)之接入指南

 更新時間:2019年03月17日 15:33:06   作者:xiadd  
這篇文章主要介紹了nodejs微信開發(fā)之接入指南,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

最近又拾起了微信開發(fā),之前的公眾號是用的flask進行開發(fā)的,所以最近想要用nodejs改寫一下,這些算是記錄吧,邊寫代碼邊寫下這篇文章。

因為我對nodejs也并不是那么的熟悉,僅僅是新手的狀態(tài),如果有錯誤的地方請指出。

文章最后會放出源碼。公眾號部署在leancloud,這里也會稍微介紹一下leancloud的云引擎,方便部署。

這部分文章涉及的代碼不多,多是工具的介紹以及一個接入指南。

內網(wǎng)穿透

由于微信開發(fā)的端口必須是80(最近貌似增加了443),所以一個內網(wǎng)穿透工具還是很有必要的。我個人使用的是qq瀏覽器微信調試工具。


我也推薦這個,畢竟一家的。
但是也有其他的選擇:

花生殼
這個速度還可以,但是只有window客戶端的,貌似還可以折騰路由器那邊的東西,我也沒深入折騰。

nat123
與花生殼類似,但是速度著實不太給力。經(jīng)常配置錯誤。說是免費但是需要預充幾塊錢進去,不是很推薦。

ngrok
一個開源軟件,可以自己在服務器上部署也可以使用現(xiàn)成的,其實qq瀏覽器的微信調試就是基于這個搭建的。算是比較好用的。

leancloud

為什么使用leancloud,其實是我沒太接觸其他的云服務,也無從比較,另外一個就是heroku,但是國內的訪問速度感人。
leancloud應該是一個類似parse(其實parse我也不是很了解hhhh)的服務,但還提供了托管web的云引擎。包括python和nodejs兩種,這里介紹nodejs的引擎。云引擎入門的話請看leancloud云引擎入門,畢竟比我講的強多了。
對于個人開發(fā)者,leancloud算是免費的,限制不是很大,但是貌似最近出了個實名認證,但是沒認證好像也沒啥問題。但是對于面試用戶,如果應用沒有請求,就是睡眠,所以如果應用打不開多試兩次就行了,極有可能是睡眠了。

常用命令

lean new新建項目
lean app add [appname] [appid] 關聯(lián)項目到leancloud 云引擎
lean up 啟動服務
lean deploy部署應用(貌似收費用戶是部署到測試環(huán)境)
lean publish部署到開發(fā)環(huán)境(免費用戶用不著)

云引擎簡介

進入控制臺后如圖所示:


存儲是數(shù)據(jù)庫,各個功能如名字所說。一些暫時用不著的功能就不提了。

主要是云引擎這個選項,需要進入設置中配置好域名。

數(shù)據(jù)庫

leancloud的數(shù)據(jù)庫是一個半殘的mongo,基本是夠用的。文檔在這js數(shù)據(jù)開發(fā)

公眾號的接入

我這邊使用的是公眾號測試號,因為個人申請到的訂閱號的功能嚴重缺失。

首先看微信文檔

填寫服務器配置


也就上圖的接口配置信息,url是你服務部署的地方,圖中的url是微信調試工具生成的,所以有些亂,token是隨意填寫的,注意下面還是要用到的,注意保存好。

驗證服務器地址的有效性

這里就是代碼部分了。先上目錄結構:

app目錄放業(yè)務邏輯代碼。

config.js存放相關配置,包括微信公眾號的appId ,Token等

module.exports = {
 'token': 'yourtoken',//配置中的token
 'appId': 'your appid',//配置里的appid
 'appSecret': 'your appsecret'//配置中的appsecret
};

注:這部分引自微信公眾平臺文檔

開發(fā)者提交信息后,微信服務器將發(fā)送GET請求到填寫的服務器地址URL上,GET請求攜帶參數(shù)如下表所示:

通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信服務器,請原樣返回echostr參數(shù)內容,則接入生效,成為開發(fā)者成功,否則接入失敗。加密/校驗流程如下:
1)將token、timestamp、nonce三個參數(shù)進行字典序排序
2)將三個參數(shù)字符串拼接成一個字符串進行sha1加密
3)開發(fā)者獲得加密后的字符串可與signature對比,標識該請求來源于微信

這部分的代碼如下:

const crypto = require('crypto');
const path = require('path');
const url = require('url');

//import config
const config = require('../../config');

//進行sha1加密
function sha1(str) {
 var shasum = crypto.createHash("sha1");
 shasum.update(str);
 str = shasum.digest("hex");
 return str;
}

function wechatAuth(req, res) {
 var query = url.parse(req.url, true).query;
 var signature = query.signature;
 var echostr = query.echostr;
 var timestamp = query['timestamp'];
 var nonce = query.nonce;

 var reqArray = [nonce, timestamp, config.token];

 //對數(shù)組進行字典排序
 reqArray.sort();
 var sortStr = reqArray.join('');//連接數(shù)組
 var sha1Str = sha1(sortStr);

 if (signature === sha1Str) {
  res.end(echostr);
 } else {
  res.end("false");
  console.log("授權失敗!");
 }
}

module.exports = wechatAuth;

相信代碼說的總是比我清楚,首先獲取請求url中的四個參數(shù),對nonce,timestamp, 和token進行字典排序也就是Array.sort(),然后進行字符串拼接,進行sha1加密,如果結果和signature相等則成功,(順便說一句,其實直接返回echostr也是可以成功的,不過后面的請求就不太好辦了?)。

這樣來說接入應該就算是成功了。

首先github地址奉上:https://github.com/xiadd/shorthand

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 淺析nodejs實現(xiàn)Websocket的數(shù)據(jù)接收與發(fā)送

    淺析nodejs實現(xiàn)Websocket的數(shù)據(jù)接收與發(fā)送

    WebSocket是HTML5開始提供的一種瀏覽器與服務器間進行全雙工通訊的網(wǎng)絡技術,本文給大家介紹nodejs實現(xiàn)websocket的數(shù)據(jù)庫接收與發(fā)送,小伙伴們一起學習吧
    2015-11-11
  • 利用Node.js對文件進行重命名

    利用Node.js對文件進行重命名

    最近工作中遇到了對文件進行重命名的需求,后通過node.js實現(xiàn)了,所以下面這篇文章主要給大家介紹了利用Node.js對文件進行重命名的相關資料,文中介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • npm更新命令更新最新版本的實現(xiàn)方式

    npm更新命令更新最新版本的實現(xiàn)方式

    這篇文章主要介紹了npm更新命令更新最新版本的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Node.js 多線程實戰(zhàn)小結

    Node.js 多線程實戰(zhàn)小結

    在?Node.js?的世界中,多線程技術一直是一個受到廣泛關注的領域,本文主要介紹了Node.js 多線程實戰(zhàn)小結,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • 利用Decorator如何控制Koa路由詳解

    利用Decorator如何控制Koa路由詳解

    最近學習了plover的底層框架koa,所以下面這篇文章主要給大家介紹了關于利用Decorator如何控制Koa路由的相關資料,,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來隨著小編一起學習學習吧
    2018-06-06
  • NodeJS父進程與子進程資源共享原理與實現(xiàn)方法

    NodeJS父進程與子進程資源共享原理與實現(xiàn)方法

    這篇文章主要介紹了NodeJS父進程與子進程資源共享原理與實現(xiàn)方法,結合實例形式分析了nodejs基于cluster模塊實現(xiàn)父進程與子進程資源共享的相關操作技巧,需要的朋友可以參考下
    2018-03-03
  • Node.js16.15.1的一個報錯以及解決方案分享

    Node.js16.15.1的一個報錯以及解決方案分享

    這篇文章主要給大家介紹了關于Node.js16.15.1的一個報錯以及解決方案的相關資料,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-12-12
  • Node.js Stream ondata觸發(fā)時機與順序的探索

    Node.js Stream ondata觸發(fā)時機與順序的探索

    今天小編就為大家分享一篇關于Node.js Stream ondata觸發(fā)時機與順序的探索,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 利用Node.js了解與測量HTTP所花費的時間詳解

    利用Node.js了解與測量HTTP所花費的時間詳解

    這篇文章主要給大家介紹了關于利用Node.js了解與測量HTTP所花費的時間的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-09-09
  • NodeJS學習筆記之(Url,QueryString,Path)模塊

    NodeJS學習筆記之(Url,QueryString,Path)模塊

    今天我們來看一下在nodejs中路徑的相關操作方法。在我們開發(fā)過程中路徑主要有:URL路徑,在瀏覽器中進行使用,當然這個也包含查詢字符串QueryString的相關操作;而另一種是磁盤路徑,主要用于文件等等進行操作,我們稱為Path,所以我將它們放在一起進行總結學習。
    2015-01-01

最新評論