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

Koa2微信公眾號開發(fā)之本地開發(fā)調(diào)試環(huán)境搭建

 更新時間:2018年05月16日 16:09:06   作者:流口水流  
本篇文章主要介紹了Koa2微信公眾號開發(fā)之本地開發(fā)調(diào)試環(huán)境搭建,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

最近沉迷吃雞不能自拔,好久沒更新文章了。后續(xù)將陸續(xù)完善《Koa2微信公眾號開發(fā)》。

一、簡介

關(guān)于微信公眾號的介紹就省略了,自行搜索。注冊過程也不說了。我們會直接注冊測試號來實(shí)現(xiàn)代碼。這將會是個全面講解微信公眾號開發(fā)的系列教程。本篇是該系列的第一篇,本地開發(fā)環(huán)境搭建以及接入微信。

在開始之前最好去看看開發(fā)者文檔微信公眾平臺技術(shù)文檔

二、本地開發(fā)調(diào)試環(huán)境搭建

2.1 開發(fā)環(huán)境

  1. MacOs
  2. Node v8.9.1
  3. Koa2

2.2 微信公眾平臺開發(fā)的基本原理

我們先來看看微信公眾平臺開發(fā)的基本原理:在進(jìn)行微信開發(fā)的時候,需要在我們在自己的服務(wù)器上部署服務(wù)對微信消息進(jìn)行處理。微信服務(wù)器就相當(dāng)于一個轉(zhuǎn)發(fā)服務(wù)器。終端(手機(jī)、Pad等)發(fā)起請求至微信服務(wù)器,微信服務(wù)器然后將請求轉(zhuǎn)發(fā)給自定義服務(wù)(這里就是我們的具體實(shí)現(xiàn))。服務(wù)處理完畢,然后轉(zhuǎn)發(fā)給微信服務(wù)器,微信服務(wù)器再將具體響應(yīng)回復(fù)到終端,通信協(xié)議為:HTTP;數(shù)據(jù)格式為:XML。

我們的服務(wù)需要做的就是對請求做出響應(yīng),解析XML,進(jìn)行相應(yīng)的處理后再返回特定的XML。

2.3 ngrok微信本地開發(fā)

這兒我們了解到了接入微信開發(fā)需要一個自己的響應(yīng)服務(wù)器,我們可以購買服務(wù)器或者新浪云百度云之類的服務(wù)。但是在我們開發(fā)階段這樣做是很麻煩的,我們需要搭建一個好用的本地調(diào)試環(huán)境,將內(nèi)網(wǎng)映射出去,讓外網(wǎng)能夠訪問的。

這兒推薦使用Ngrok服務(wù)。win、mac都能方便使用,而且穩(wěn)定,外網(wǎng)域名是固定的。

打開它的網(wǎng)站www.ngrok.cc/注冊登錄然后開通隧道。同時你需要下載相應(yīng)的客戶端

在win中這是個批處理文件,運(yùn)行它然后填入相應(yīng)的隧道id回車即可,在Mac中命令行執(zhí)行如下命令。

./sunny clientid 隧道id

運(yùn)行成功會返回ngrok換發(fā)域名。

更多參見ngrok官網(wǎng)教程

到此,我們來讓node服務(wù)跑起來,并通過ngrok的域名外網(wǎng)訪問

mkdir koa2-wechat && cd koa2-wechat
npm install koa --save

新建app.js

const Koa = require('koa')
const app = new Koa()

app.use(async ctx => {
 ctx.body = 'JavaScript之禪'
});

app.listen(7001);

我們運(yùn)行app.js,將服務(wù)跑起來,瀏覽器打開localhost:7001我們將能夠看見返回了JavaScript之禪。這兒推薦使用supervisor,它會監(jiān)視你對代碼的改動,并自動重動 Node

npm install -g supervisor
supervisor app.js

接下來就是用前面講的ngrok進(jìn)行內(nèi)網(wǎng)轉(zhuǎn)發(fā)了

./sunny clientid 隧道id

如果不出問題,你打開你的轉(zhuǎn)發(fā)域名http://**.free.ngrok.cc也將看見JavaScript之禪

三、接入微信公眾平臺開發(fā)

3.1 接入流程

接入微信公眾平臺開發(fā),開發(fā)者需要按照如下步驟完成:

1、填寫服務(wù)器配置

2、驗(yàn)證服務(wù)器地址的有效性

3、依據(jù)接口文檔實(shí)現(xiàn)業(yè)務(wù)邏輯

我們登錄微信公眾平臺接口測試帳號https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,登錄后填寫接口配置信息*(你的url地址以及token)*,這時肯定不能配置成功的。我們需要驗(yàn)證服務(wù)器地址的有效性,開發(fā)者提交信息后,微信服務(wù)器將發(fā)送GET請求到填寫的服務(wù)器地址URL上,GET請求攜帶參數(shù)如下表所示:

參數(shù) 描述
signature 微信加密簽名,signature結(jié)合了開發(fā)者填寫的token參數(shù)和請求中的timestamp參數(shù)、nonce參數(shù)。
timestamp 時間戳
nonce 隨機(jī)數(shù)
echostr 隨機(jī)字符串

開發(fā)者通過檢驗(yàn)signature對請求進(jìn)行校驗(yàn)。若確認(rèn)此次GET請求來自微信服務(wù)器,原樣返回echostr參數(shù)內(nèi)容,則接入生效,成為開發(fā)者成功,否則接入失敗。加密/校驗(yàn)流程如下:

  1. 將token、timestamp、nonce三個參數(shù)進(jìn)行字典序排序
  2. 將三個參數(shù)字符串拼接成一個字符串進(jìn)行sha1加密
  3. 開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信

Talk is cheap. Show me the code

3.2 koa2驗(yàn)證服務(wù)器地址的有效性

修改app.js

const Koa = require('koa')
const app = new Koa()
// 引入node加密模塊進(jìn)行sha1加密
const crypto = require('crypto')

const config = {
 wechat: {
  appID: 'appID',
  appsecret: 'appsecret',
  token: 'zenofjavascript',
 }
}

app.use(async ctx => {
  const { signature, timestamp, nonce, echostr } = ctx.query 
  const token = config.wechat.token
  let hash = crypto.createHash('sha1')
  const arr = [token, timestamp, nonce].sort()
  hash.update(arr.join(''))
  const shasum = hash.digest('hex')
  if(shasum === signature){
   return ctx.body = echostr
  }
  ctx.status = 401   
  ctx.body = 'Invalid signature'
})

app.listen(7001)

進(jìn)入測試號的頁面重新提交接口配置信息,你將會看見一個一閃而過的配置成功過提示框。恭喜,這標(biāo)志著你正式跳進(jìn)了微信開發(fā)的坑了。

本篇文章到此結(jié)束,下一節(jié)將講解公眾號的消息回復(fù)功能

參考鏈接

微信公眾平臺開發(fā)者文檔
公眾號測試號
Ngrok
koa
supervisor

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在Node.js中實(shí)現(xiàn)關(guān)注列表和粉絲列表的方法示例

    在Node.js中實(shí)現(xiàn)關(guān)注列表和粉絲列表的方法示例

    在社交網(wǎng)絡(luò)或者任何需要用戶交互的應(yīng)用中,實(shí)現(xiàn)關(guān)注和被關(guān)注的功能是非常常見的需求,本文將通過一個簡單的例子,展示如何在Node.js環(huán)境下實(shí)現(xiàn)用戶的關(guān)注列表和粉絲列表,需要的朋友可以參考下
    2024-04-04
  • 在node中如何調(diào)用python腳本

    在node中如何調(diào)用python腳本

    這篇文章主要介紹了在node中如何調(diào)用python腳本,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 手把手帶你安裝多個node版本

    手把手帶你安裝多個node版本

    在項(xiàng)目開發(fā)過程中,不同項(xiàng)目使用的node版本不同,有時會因?yàn)閚ode版本過高或太低,導(dǎo)致報(bào)錯,下面這篇文章主要給大家介紹了關(guān)于安裝多個node版本的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 詳解使用PM2管理nodejs進(jìn)程

    詳解使用PM2管理nodejs進(jìn)程

    本篇文章主要介紹了詳解使用PM2管理nodejs進(jìn)程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • nodejs高版本降為低版本的詳細(xì)解決方案

    nodejs高版本降為低版本的詳細(xì)解決方案

    部分老舊項(xiàng)目需要使用低版本的node,網(wǎng)上很多是無效的,高版本無法直接安裝低版本node,但是低版本nodejs可以安裝部分高版本node,從而達(dá)到升級效果,下面這篇文章主要給大家介紹了關(guān)于nodejs高版本降為低版本的詳細(xì)解決方案,需要的朋友可以參考下
    2022-12-12
  • 詳解Node.js如何開發(fā)命令行工具

    詳解Node.js如何開發(fā)命令行工具

    追求更高的效率是碼農(nóng)不斷的追求。選擇合適的工具,合理搭配使用,既能提高一部分開發(fā)效率,又能改善寫代碼時的心情。使用Node.js開發(fā)命令行工具是開發(fā)者應(yīng)該掌握的一項(xiàng)技能,適當(dāng)編寫命令行工具以提高開發(fā)效率。
    2016-08-08
  • node.js中的buffer.slice方法使用說明

    node.js中的buffer.slice方法使用說明

    這篇文章主要介紹了node.js中的buffer.slice方法使用說明,本文介紹了buffer.slice的方法說明、語法、接收參數(shù)、使用實(shí)例和實(shí)現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • 詳解Node.js一行命令上傳本地文件到服務(wù)器

    詳解Node.js一行命令上傳本地文件到服務(wù)器

    這篇文章主要介紹了Node.js一行命令上傳本地文件到服務(wù)器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 我的Node.js學(xué)習(xí)之路(三)--node.js作用、回調(diào)、同步和異步代碼 以及事件循環(huán)

    我的Node.js學(xué)習(xí)之路(三)--node.js作用、回調(diào)、同步和異步代碼 以及事件循環(huán)

    本篇文章主要介紹了node.js的幾個重要的知識點(diǎn):node.js作用、回調(diào)、同步和異步代碼 以及事件循環(huán)
    2014-07-07
  • 如何利用node實(shí)現(xiàn)靜態(tài)文件緩存詳解

    如何利用node實(shí)現(xiàn)靜態(tài)文件緩存詳解

    HTTP 緩存機(jī)制作為 Web 應(yīng)用性能優(yōu)化的重要手段,對于從事 Web 開發(fā)的同學(xué)們來說,應(yīng)該是知識體系的基礎(chǔ)環(huán)節(jié),也是想要成為前端架構(gòu)的必備技能,這篇文章主要給大家介紹了關(guān)于如何利用node實(shí)現(xiàn)靜態(tài)文件緩存的相關(guān)資料,需要的朋友可以參考下
    2021-07-07

最新評論