公眾號安全域名及js-sdk驗證

??最近做了一個公眾號的項目,需要用到用戶的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)頁賬號 ,點擊右邊的修改,填入需要使用的域名就好了,后面會用來做登錄。

??這里微信域名的配置基本完成。

_PS: 之前發(fā)布生產(chǎn)環(huán)境,直接清空測試環(huán)境數(shù)據(jù)上線,期間出現(xiàn)了一些小問題,公眾號和測試號的服務器驗證以及回調(diào)域名設置不同,需要在管理后臺下載一個txt文件,然后放到訪問路徑根目錄下,并且可以真實反問到,這里替換的就是之前我們自己設置的Token,在公眾號上由管理后臺生成,而不是我們自己去生成了_

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 在上一篇文章我們主要學會了如何在阿里云上搭建一個持久運行的服務器,并且使用了express框架來快速實現(xiàn),在這一章...
    陳堅生閱讀 2,220評論 0 9
  • 微信服務號開發(fā) 整體流程 域名報備,服務器搭建 Python開發(fā)環(huán)境和項目的初始化搭建; 微信公眾號注冊及開發(fā)模式...
    飛行員suke閱讀 4,703評論 0 14
  • 分享給每一個想統(tǒng)治宇宙的Jser。 接口信息配置 前言:做外包遇到最多的就是基于微信的H5頁面。做這種頁面js-s...
    三月懶驢閱讀 2,031評論 1 2
  • 開發(fā)前首先我們要知道一些概念 各公眾號區(qū)別:1、訂閱號:為媒體和個人提供一種信息傳播方式,主要偏于為用戶傳達資訊(...
    CoderZS閱讀 3,530評論 1 19
  • 知道你們在集體等我 隊列整齊 腰桿筆挺 修長的手拍打著初夏的風 掌聲很遠我都能聽見 去看你們的路上才發(fā)現(xiàn) ...
    風柯月渚閱讀 608評論 0 5

友情鏈接更多精彩內(nèi)容