4 配置接入驗證微信公衆號--開發微信的第一道坎兒

第一步 申請測試號

  要開發微信公衆號,首先咱們得有一個公衆號,這裏咱們使用官方給開發者提供的接口測試號。node

  打開微信公衆平臺官網:https://mp.weixin.qq.com/,而後進入微信公衆平臺技術文檔:https://mp.weixin.qq.com/wiki,在開始開發菜單裏,有接口測試號申請:web

  而後用本身的微信掃一下二維碼:算法

  掃描完成點擊登陸後,咱們會進入一個測試號管理的頁面,說明,咱們已經成功申請了一個測試公衆號。npm

第二步 配置接入驗證公衆號

  驗證公衆號過程:安全

  驗證過程示例圖說明:服務器

    1 將token、timestamp(時間戳)、nonce(隨機數)三個參數進行字典排序微信

    2 將三個參數數字字符串拼接成一個字符串進行sha1加密網絡

    3 將加密後的字符串與signature對比,若是相同,表示這個請求來源於微信,咱們直接原樣返回echostr參數內容,接入驗證就成功了。app

  下面咱們來動手實踐一下操做過程。微信公衆平臺

  新建測試項目文件目錄wechat,經過終端命令進入項目文件 $ cd Desktop/wechat/

  而後,使用npm安裝koa和sha1模塊 $ npm install koa sha1,安裝完成後,使用編輯器進入wechat目錄,新建app.js文件,並寫入如下代碼:

'use strict';
// 引入模塊
var Koa = require('koa');
var sha1 = require('sha1');
// 聲明對象字面量config 用於存儲配置信息
var config = {
        wechat:{
            appID: 'wx044125d0a173dd15',
            appSecret: '21295f049b49fe324d7302186c294fe7',
            token: 'beijingjiangweiwechatlearntokenvalue'
        }
    }
    // 實例化Koa的web服務器
var app = new Koa();
app.use(function*(next) {
    console.log(this.query);
    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);
    // 判斷加密後的值是否等於簽名值
    if (sha === signature) {
        this.body = echostr + '';
    } else {
        this.body = 'wrong';
    }
});
//監聽3100端口
app.listen(3100);
console.log('listening:3100');

  app.js即爲項目啓動文件,如今,咱們使用終端,用node啓動app.js:

  而後,使用啓動魔法隧道(魔法隧道使用方法參看上一節)$ ./mofasuidao tokenvalue

  進入以前申請微信測試號的管理頁面,填入url和token,url即我上圖中內網映射的外網地址,token先隨便填一下:

  填好後點擊提交,若是成功,頁面上方會提示咱們配置成功。

  若是配置失敗,能夠從映射內網端口未成功、端口設置錯誤、網絡問題、加密算法問題,參數順序問題、驗證地址是否與實際不符等方法逐一排除。

    參考資料:

    ① 字典排序:是一種對於隨機變量造成序列的排序方法。

    ② sha1:安全哈希算法,主要適用於數字簽名標準裏面定義的數字簽名算法。

    ③ signature:簽名。

    ④ echostr:隨機字符串。

 注意:由於官方文檔是處於更新狀態的,因此後面關於微信公衆號的知識點,可能跟最新的文檔有必定的差別,因此開發的時候仍是要以最新的文檔爲準。

相關文章
相關標籤/搜索