当前位置: 首页 > news >正文

Node.js+Koa开发微信公众号个人笔记(一)准备工作

本人也是在学习过程中,所以文章只作为学习笔记,如果能帮到你,那就更好啦~当然也难免会有错误,请不吝指出~

一、准备工作

1、本人学习教程:慕课网Scott老师的《Node.js七天搞定微信公众号》 ,但是有点小贵,经济条件允许的话可以支持一下。

2、文档:微信开发官方文档,必备。https://mp.weixin.qq.com/wiki

3、微信开发测试号:测试公众号,必备。https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

4、云服务器:本人使用的是阿里云ECS,我是不建议使用ngrok这类的工具,太麻烦了,有个云服务器后一劳永逸!想弄的话可以看一下我以前的一篇文章http://www.cnblogs.com/zczhangcui/p/6789094.html

5、域名:有了服务器和外网IP后,没有域名好像也可以进行,我是买了个域名并进行了备案,备案耗时较长,我是在云网买的,建议买之前看看域名在国内能不能备案。

6、开发工具:mac + chrome + sublime + 手机,当然都不是必须的。sublime使用sftp插件向云服务同步代码,很方便。

二、框架选择

这里使用了Node.js的Koa框架的1.2版本,Node版本为7.6.

至于为什么Koa2都有了还要用Koa1.2,当然是跟着教程来的,为了减小入门成本,所以选择了与教程一致的版本。_(:з」∠)_

三、目录结构

这里目录的生成使用了koa-generator快速生成。https://github.com/17koa/koa-generator

四、接入微信服务器

首先进入测试号页面,如下图

其中接口配置信息需要填写你的服务器URL,Token是自己填写的验证信息,内容随意。在提交之前,需要在服务器端进行配置。说白了,这个过程就是向微信证明“你(填写的服务器地址)是你”。

五、配置服务器,完成接入

在此之前,必须阅读微信开发文档,了解接入过程

 

接下来直接上代码:

首先使用koa-generator或者生成项目目录,之后使用npm install 安装依赖。

在routes下的index中进行如下修改:

var router = require('koa-router')();
var index_middleware = require('../wechat/index_middleware');
var config = require('../wechat/config');

router.get('/', index_middleware.get(config.wechat));

module.exports = router;

接下来实现index_middleware和config。

wechat/config.js:

module.exports = {
    wechat: {
        appID: 'xxxxxx',
        appSecret: 'xxxxxxxxxxxxxxx',
        token: 'xxxxxxx'
    }
};

这里面的信息根据你自己的测试号进行填写。

wechat/index_middleware.js:

var sha1 = require('sha1');

exports.get = function(opts) {
    return function *(next) {
        var token = opts.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 + '';
        }
    };
};

完成接入逻辑后,需要npm install sha1 --save 安装sha1加密模块。

建议安装npm install supervisor -g,之后supervisor bin/www启动服务器并监听变化自动重启服务器,这样可以不用每次改动后手动重启服务器。

完成以上步骤后,回到步骤四,对填写的URL进行验证,这时,无意外的话,会出现验证成功,至此该服务器可以作为微信开发服务器了。

 

相关文章:

  • Linux常见命令(二)
  • Django web project
  • okhttp使用总结
  • IP address could not be resolved: Temporary failure in name resolution
  • java基础系列:(一)初始化与清理
  • tarjan强联通分量(模板)
  • 4.3.4 空值与聚合函数
  • AC日记——矩阵取数游戏 洛谷 P1005
  • 【Docker镜像】docker默认存放路径
  • iOS多线程---NSOperation的常用操作
  • Spring源码-IOC容器(六)-bean的循环依赖
  • Android 图片缓存处理
  • iOS中 OC字符串 与 C语言字符串 相互转换
  • php+Ajax 例子
  • 英语句型——口语
  • exif信息对照
  • Just for fun——迅速写完快速排序
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • linux安装openssl、swoole等扩展的具体步骤
  • Nodejs和JavaWeb协助开发
  • rc-form之最单纯情况
  • Theano - 导数
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 回顾 Swift 多平台移植进度 #2
  • 基于axios的vue插件,让http请求更简单
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 浅谈Golang中select的用法
  • 日剧·日综资源集合(建议收藏)
  • 线性表及其算法(java实现)
  • 一个JAVA程序员成长之路分享
  • 因为阿里,他们成了“杭漂”
  • 在Unity中实现一个简单的消息管理器
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • #### go map 底层结构 ####
  • #1015 : KMP算法
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (13)Hive调优——动态分区导致的小文件问题
  • (145)光线追踪距离场柔和阴影
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (分布式缓存)Redis持久化
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (三)docker:Dockerfile构建容器运行jar包
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (新)网络工程师考点串讲与真题详解
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • *1 计算机基础和操作系统基础及几大协议
  • .net 4.0发布后不能正常显示图片问题
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET 命令行参数包含应用程序路径吗?