??最近做了一個公眾號的項目,需要用到用戶的openid,以前都是驗證這一塊都是后臺java去做的,這一次自己去用node寫了一下。
-
注冊微信測試號
- 首先,注冊一個測試號,然后登錄
-
測試號配置
-
進入后臺管理,其中有一個 接口配置信息 ,點擊修改。
在開發(fā)文檔里有三個表單,URL、Token和EncodingAESKey, 但是測試號只有前兩個,其中URL是用來接受微信消息和事件的,Token用來生成簽名,做安全性比對。開發(fā)文檔的例子是PHP的,就自己查找資料用node寫了一個校驗const url = require('url'); const querystring = require('querystring'); const crypto = require('crypto'); app.get(['/index'], function (req, res) { //自己生成的token,和后臺管理里填入的一樣 const token = 'your token'; //獲取請求中的數(shù)據(jù) const url_params = url.parse(req.url, true); const query = url_params.query; const signature = query.signature; const timestamp = query.timestamp; const nonce = query.nonce; //字典排序 let tmpArr = [token, timestamp, nonce]; tmpArr.sort(); //對排序后的結(jié)果進行加密 let sha1 = crypto.createHash('sha1'); let msg = tmpArr[0] + tmpArr[1] + tmpArr[2]; sha1.update(msg); msg = sha1.digest('hex'); // 將加密后的結(jié)果與微信請求過來的 signature 進行驗證 if (msg == signature) { console.log('驗證成功'); res.end(query.echostr); } else { console.log('驗證失敗'); res.end('微信登錄驗證失敗,請重試!'); } }); 啟動一個服務,用來驗證我們的服務器是有效的,填寫好域名點擊確定,頁面頭部中央出現(xiàn)綠色的提示代表成功,如果不是,查看一下服務器的配置是否正確。
PS: 我這里用到了一個 natapp 的軟件,可以將一個外網(wǎng)域名代理到本機,自定義端口只需要注冊就OK了。
驗證成功后,便可以去定義接受微信消息和事件的接口了。
-
-
設置 js-sdk 安全域名
- 這個沒什么難度,點擊修改JS接口安全域名,填寫域名就可以了,不需要驗證。再需要調(diào)用的時候才會去進行驗證
-
設置回調(diào)域名
- 這個在體驗接口權(quán)限表里,找到
網(wǎng)頁服務>網(wǎng)頁賬號,點擊右邊的修改,填入需要使用的域名就好了,后面會用來做登錄。
- 這個在體驗接口權(quán)限表里,找到
??這里微信域名的配置基本完成。
_PS: 之前發(fā)布生產(chǎn)環(huán)境,直接清空測試環(huán)境數(shù)據(jù)上線,期間出現(xiàn)了一些小問題,公眾號和測試號的服務器驗證以及回調(diào)域名設置不同,需要在管理后臺下載一個txt文件,然后放到訪問路徑根目錄下,并且可以真實反問到,這里替換的就是之前我們自己設置的Token,在公眾號上由管理后臺生成,而不是我們自己去生成了_