摘要:接口信息配置前言做外包遇到最多的就是基于微信的頁面。當(dāng)我們填好之后點(diǎn)擊提交的話,微信會向你的服務(wù)器發(fā)送信息,你要解析一遍之后返回正確的信息,這一步的配置才能成功。
接口信息配置分享給每一個(gè)想統(tǒng)治宇宙的Jser。
前言:做外包遇到最多的就是基于微信的H5頁面。做這種頁面js-sdk引入是必須的。萬惡的TX把這個(gè)東西做到了綁定域名,要計(jì)算驗(yàn)證才能使用。我苦逼的小小jser又如何去慢慢一步步摸索過來的呢。聽我慢慢訴說。
首先你的申請一個(gè)測試者賬號,點(diǎn)我大跳轉(zhuǎn)門--> 傳送門
第一項(xiàng)“測試號信息”有你的app ID和appsercet。先不要管他。
第二項(xiàng)的接口配置和信息,這里填寫的URL,就是你的服務(wù)器IP:http:// +IP地址。
Token就是你和微信約定好的一個(gè)字符串,你喜歡填寫什么就填寫什么。隨意填寫的一個(gè)字符串。后面解析請求的時(shí)候用到(這一步先填寫好,不能按提交那么快)
第三項(xiàng):JS接口安全域名。這個(gè)是萬惡的根源,填上你自己的域名。最好就是根域名,這樣的話,在這個(gè)根之下的域名的頁面都能用到。
下面的幾項(xiàng)和這次的無關(guān),不說了,跳回去我們的sublime編輯代碼去。
回到我們的代碼去,服務(wù)器后臺用node+express的,首先我們要處理上面沒有確認(rèn)的一個(gè)配置信息。當(dāng)我們填好URL+Token之后點(diǎn)擊提交的話,微信會向你的服務(wù)器發(fā)送信息,你要解析一遍之后返回正確的信息,這一步的配置才能成功。
所以我們就在router里面加一個(gè)get的處理
//來自微信的信息
router.get("/",function(req,res,next){});
//不是來自微信的信息
router.get("/", function(req, res, next) {
res.render("index", {title:"hello !"});
});
這時(shí)候get過來的信息有四個(gè):
signature: 微信加密簽名,signature結(jié)合了開發(fā)者填寫的token參數(shù)和請求中
timestamp參數(shù)、nonce參數(shù)。
timestamp:時(shí)間戳
nonce: 隨機(jī)數(shù)
echostr:隨機(jī)字符串
整個(gè)驗(yàn)證過程簡單來說就是這么一個(gè)過程:
通過檢驗(yàn)signature對請求進(jìn)行校驗(yàn): 若確認(rèn)此次GET請求來自微信服務(wù)器,請?jiān)瓨臃祷?echostr參數(shù)內(nèi)容,則接入生效,成為開發(fā)者成功, 否則接入失敗。
加密/校驗(yàn)流程如下:
1.將token(服務(wù)器內(nèi)定義)、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序
2.將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密
3.開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信
好了,前面說了那么多廢話,現(xiàn)在開始進(jìn)行代碼,show your 本事 in code
預(yù)熱工作:因?yàn)槔锩嬗胹ha1加密,使用crypto模塊是個(gè)不錯(cuò)的選擇
npm install crypto --save
來到router里面,我們引入這個(gè)模塊
var crypto = require("crypto");
然后開始處理信息了
var TOKEN = "sanyuelanv"; /*來自微信的信息*/ router.get("/",function(req,res,next){ var query = req.query; /*取出四個(gè)值*/ var signature = query.signature; var echostr = query.echostr; var timestamp = query["timestamp"]; var nonce = query.nonce; /*拼成數(shù)組,字典排序,再拼接*/ var tmpArr = [TOKEN,timestamp,nonce]; tmpArr.sort(); var tmpStr = tmpArr[0] + tmpArr[1] + tmpArr[2]; /*進(jìn)行加密*/ var shasum = crypto.createHash("sha1"); shasum.update(tmpStr); var shaResult = shasum.digest("hex"); //來自微信的請求,就返回echostr if (shaResult == signature){res.send(echostr);} else{next();} });
這一段代碼下來,我們提交到服務(wù)器之后,reload一下,再回到微信測試者帳號的頁面,把前面配置的確認(rèn)確定就提交上去,這是就OK了!
下一篇文章再寫JSSDK驗(yàn)證吧!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/86290.html
摘要:導(dǎo)讀在今年騰訊云峰會上,開源技術(shù)同樣是一大亮點(diǎn)。此文是微票時(shí)代技術(shù)副總裁楊森淼在現(xiàn)場有關(guān)微票兒的實(shí)踐之路分享的實(shí)錄。 導(dǎo)讀 在今年騰訊云峰會上,開源技術(shù)同樣是一大亮點(diǎn)。作為開源技術(shù)的集成平臺,Cloud Native 專場給各家提供了針對 OpenStack 應(yīng)用以及背后填坑之路作深度探討的機(jī)會。此文是微票時(shí)代技術(shù)副總裁楊森淼在現(xiàn)場有關(guān)《微票兒的 Cloud Native 實(shí)踐之路》分...
摘要:導(dǎo)讀在今年騰訊云峰會上,開源技術(shù)同樣是一大亮點(diǎn)。此文是微票時(shí)代技術(shù)副總裁楊森淼在現(xiàn)場有關(guān)微票兒的實(shí)踐之路分享的實(shí)錄。 導(dǎo)讀 在今年騰訊云峰會上,開源技術(shù)同樣是一大亮點(diǎn)。作為開源技術(shù)的集成平臺,Cloud Native 專場給各家提供了針對 OpenStack 應(yīng)用以及背后填坑之路作深度探討的機(jī)會。此文是微票時(shí)代技術(shù)副總裁楊森淼在現(xiàn)場有關(guān)《微票兒的 Cloud Native 實(shí)踐之路》分...
摘要:業(yè)務(wù)中前后端分離下的微信授權(quán)流程記錄這個(gè)是微信授權(quán)的流程我覺得微信的文檔授權(quán)流程還算清晰易懂,可是不太清楚具體是哪部分前端做,哪部分后端做導(dǎo)致在業(yè)務(wù)中,折騰了不少時(shí)間,特此記錄一下業(yè)務(wù)實(shí)踐。 業(yè)務(wù)中前后端分離下的微信授權(quán)流程記錄 這個(gè)是微信授權(quán)的流程 https://mp.weixin.qq.com/wiki... https://mp.weixin.qq.com/wiki... 我覺...
摘要:將請求封裝成將請求封裝成的接口定義是但是最外層傳進(jìn)來的參數(shù)是和,需要將他們封裝成,這個(gè)工作就是在中做的。其實(shí)主要任務(wù)就是將各種參數(shù)封裝成除了和本次請求相關(guān)的和,還有會話管理器,編碼解碼器配置,國際化配置還有用于擴(kuò)展。本系列代碼地址:https://github.com/JoJoTec/spring-cloud-parent接下來,將進(jìn)入我們升級之路的又一大模塊,即網(wǎng)關(guān)模塊。網(wǎng)關(guān)模塊我們廢棄了...
摘要:本篇主要講述,如何在微信中打開自家頁面后,彈窗請求用戶授權(quán),以便拿到用戶的微信信息。填寫信息,綁定微信,注冊完成,登錄進(jìn)去。 本篇主要講述,如何在微信中打開自家頁面后,彈窗請求用戶授權(quán),以便拿到用戶的微信信息。 首先說一下,完成自定義分享信息的,從無到有的流程: 基礎(chǔ)硬件服務(wù): 需要一個(gè)公網(wǎng)可以訪問的有效域名: 購買域名,并備案,我是在阿里云購買的,備案需要十幾個(gè)工作日。 購買i...
閱讀 3143·2021-09-22 15:50
閱讀 3343·2021-09-10 10:51
閱讀 3170·2019-08-29 17:10
閱讀 2934·2019-08-26 12:14
閱讀 1849·2019-08-26 12:00
閱讀 970·2019-08-26 11:44
閱讀 665·2019-08-26 11:44
閱讀 2833·2019-08-26 11:41