记得15年那个刚刚进入工作的时候,公司有个微信公众号的项目,那个时候微信官方没有什么调试工具,也没有什么比较好的本地调试工具。当时有个功能需要调用微信JSSDK里面的扫一扫的功能。由于本地不能调试。开发起来很烦。每次都需要把代码上传到测试服务器,然后在测试。这样耗费了不少时间。前几天之前的同事再次开发公众号的时候。出了一些问题。然后在讨论的时候。得知了一个微信公众号本地开发的神器"localtunne"。可以自己本地直接调试开发微信公号。调用JSSDK。使用非常简单。

什么是localtunne

  Localtunnel 是一个可以让内网服务器暴露到公网上的开源项目。项目地址。他可以让你本地项目只需要一句命令直接让外网访问。

怎么安装localtunne

  localtunnel是基于Node.js。所有你本地需要安装nodeJS。如果本地已经安装直接运行

#安装localtunnel
npm install -g localtunnel
#查看当前版本。现在最新是1.8.3
lt --version

没有安装nodejs的可以参考nodejs官方下载安装。官网

接入微信公众号

  已经安装好了localtunne,怎么关联微信公众号呢?首先打开微信公众平台接口测试帐号申请 。直接使用手机微信扫码登录。

然后看到需要填写接口配置信息和JS接口安全域名。



这个时候就需要用到刚刚我们安装的localtunnel。我们直接在控制台输入

 #这里3000指的是我本地程序的监听的端口。根据具体项目修改。运行成功会返回一个域名。这个域名等会会用到。
robin:~ robin$ lt --port 3000
your url is: https://wvfgfpvsdm.localtunnel.me

这里我们需要一段代码来做认证使用。 代码如下:

const Koa = require('koa');
const app = new Koa();
let config = require('./config/config');
let sha1 = require('sha1');
app.use(async ctx => {
//仅仅用于测试
console.log(ctx.query)
let token = config.token;
let {signature, timestamp, nonce, echostr} = ctx.query;
let arr = [token, timestamp, nonce];
let str = sha1(arr.sort().join(''));
if (str === signature) {
ctx.body = echostr+ '';
}else {
ctx.body = '出错了';
}
});
app.listen(3000);

  首先运行上面那段代码。然后我们把拿到域名了填写到网页上面。token可以随便填写要记住。然后点击提交按钮。这个时候会直接提示配置成功。同时本地程序也收到了微信的请求。



  这个时候已经完成了对公众号的接入。简单吧。如果需要用到JS接口还需要配置JS接口安全域名。 这个一个坑就是复制自己域名的时候千万不要带任何的协议。只需要复制https://或者http://后面部门就可以了。然后点击保存之后。就可以很愉快的使用js相关的API啦。当然localtunnel也有很多别的一些功能。有兴趣的可以研究下。

使用localtunne一分钟搞定微信公众号接入的更多相关文章

  1. 2014-07-23 .NET实现微信公众号接入

    今天是在吾索实习的第11天.今天我跟我的实习小组的组员们,解决了关于使用ASP.NET进行微信公众号接入的问题.因为我们小组成员也是刚接触微信公众号的二次开发,所以在解决该问题的工程中也走了不少弯路. ...

  2. thinkphp5.0 微信公众号接入支付宝支付

    ---恢复内容开始--- 真是无力吐槽这个需求了,想骂客户,好端端的非要在微信公众号接入支付宝,都知道微信公众号是拒绝支付宝的,屏蔽了支付宝,所以在微信公众号接入支付宝的话就必须手动复制链接跳出微信内 ...

  3. php 微信公众号接入支付宝支付

    真是无力吐槽这个需求了,好端端的非要在微信公众号接入支付宝,都知道微信公众号是拒绝支付宝的,屏蔽了支付宝,所以在微信公众号接入支付宝的话就必须手动复制链接跳出微信内置浏览器,强制性打开web浏览器完成 ...

  4. 微信公众号接入之排序问题小记 Arrays.sort()

    微信公众号作为强大的自媒体工具,对接一下是很正常的了.不过这不是本文的方向,本文的方向公众号接入的排序问题. 最近接了一个重构的小项目,需要将原有的php的公众号后台系统,转换为java系统.当然,也 ...

  5. 十分钟搞定微信企业帐号“echostr校验失败,请您检查是否正确解密并输出明文echostr”

    问题域:在这里我们只解决密文可以正确解密,但微信验证提示“echostr校验失败,请您检查是否正确解密并输出明文echostr”的问题. 干货:没有正确验证的原因是:你给微信返回的是字符串,而微信需要 ...

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

    本人也是在学习过程中,所以文章只作为学习笔记,如果能帮到你,那就更好啦~当然也难免会有错误,请不吝指出~ 一.准备工作 1.本人学习教程:慕课网Scott老师的<Node.js七天搞定微信公众号 ...

  7. 微信公众号token的asp.net脚本

    老板让我搞一个微信公众号.好吧.前面都很EZ,直到要使用一个token验证服务器的有效性. 看了下文档,大概意思就是微信的服务器用GET请求访问你的服务器. 其中包含了signature,nonce, ...

  8. 微信公众号开发C#系列-6、消息管理-普通消息接受处理

    1.概述 通过前面章节的学习,我们已经对微信的开发有了基本的掌握与熟悉,基本可以上手做复杂的应用了.本篇我们将详细讲解微信消息管理中普通消息的接收与处理.当普通微信用户向公众账号发消息时,微信服务器将 ...

  9. 用java开发微信公众号:接收和被动回复普通消息(三)

    上篇说完了如何接入微信公众号,本文说一下微信公众号的最基本功能:普通消息的接收和回复.说到普通消息,那么什么是微信公众号所定义的普通消息呢,微信开发者文档中提到的接收的普通消息包括如下几类: 1.文本 ...

随机推荐

  1. 避免Toast重复弹出

    Toast.matkText才会创建一个新的实例 private Toast toast = null; private void checkToastResult() { if (toast != ...

  2. 算法提高 金属采集 树形DP

    题目链接:金属采集 思路:d(i, j)表示在以i为根结点的子树中使用j个机器人的最小花费.设v为u的一个子节点,从节点i使用k个机器人收集以v为根结点的能量,状态转移方程为d(u, i) = min ...

  3. 在linux系统中

    A .etc下放置配置文件 B./var下放置日志文件 C./root超级用户主目录 D./home 使用者家目录 /bin  二进制执行文件,也就是命令文件 /etc 下存放的是配置文件 /dev ...

  4. 谈一谈Java中的Error和Exception

    Error和Exception的联系 继承结构:Error和Exception都是继承于Throwable,RuntimeException继承自Exception. Error和RuntimeExc ...

  5. Linux中select poll和epoll的区别

    在Linux Socket服务器短编程时,为了处理大量客户的连接请求,需要使用非阻塞I/O和复用,select.poll和epoll是Linux API提供的I/O复用方式,自从Linux 2.6中加 ...

  6. iOS开发之emoji处理

    看似emoji处理应该和我们iOS开发有着很大的关系,实则不然,对于emoji的处理只要在服务器端做就可以了,我所说的处理是我们将表情提交到服务器,那么在服务器端需要做些什么处理呢? 服务器如果直接存 ...

  7. iOS 开发之内存泄漏问题

    关于内存泄漏问题,一般情况下就是控制器或者视图没有正常的释放引起的,我们通常可以通过dealloc方法来检查一个控制器或者视图是否释放. 对于一个控制器或者视图没有释放,其实也就是还有强引用引用着这个 ...

  8. Debug格式化输出----基于C语言

    Debug格式化输出----基于C语言 1. 使用宏实现 举例: #include <stdio.h> #define ECHO_COLOR_NONE "\033[0;0m&qu ...

  9. 3.3.4 PCI设备进行DMA写时发生Cache命中

    如果PCI设备访问的地址在某个CPU的Cache行中命中时,可能会出现三种情况. 第一种情况是命中的Cache行其状态为E,即Cache行中的数据与存储器中的数据一致:而第二种情况是命中的Cache行 ...

  10. java定时任务(三):timerTask定时任务

    这种方式是纯粹的java代码,需要继承timerTask接口并重写run方法,创建这个类的时候就会调用run方法. 基本的使用逻辑是: 把自己需要处理的业务逻辑放在自己写的这个继承了timerTask ...