美文网首页
微信公众号后端开发-使用ngrok搭建本地环境

微信公众号后端开发-使用ngrok搭建本地环境

作者: 码丁 | 来源:发表于2021-04-16 18:17 被阅读0次

    今天记录一个微信公众号后端开发中遇到的问题。

    一、问题描述

    客户希望能动态生成带参数的微信二维码,用户扫描后,服务端能接收二维码中的参数进行逻辑处理。

    先简单梳理一下流程:

    1. 调用微信的生成带参数的二维码接口,生成二维码。
    2. 服务端提供回调接口,用于接收微信发送的扫描带参数二维码事件

    步骤1的开发没有难度,直接调用相应接口就能完成。重点说一下步骤2,既然是回调接口,那就意味着需要提供一个接口,供微信服务器来调用。可是本地环境在局域网内,微信无法访问到,开发的时候怎么才能方便的调试呢?

    本地开发通常都是使用微信测试号,在测试号里也是可以配置服务器地址的。那能把本机地址配上去吗?显然是不能的。

    image.png

    二、解决方案

    先说结论:借助ngrok工具进行内网穿透。ngrok的文档中有这样一句话:

    Expose a local web server to the internet。

    翻译过来就是“把本地的web服务器暴露在公网上”,那就着能通过公网访问本地的web服务器,我们不就是希望能在本地环境方便的开发、调试吗?这就达到了目的。

    步骤:

    1. 从ngrok的官网上下载好,然后启动。我这里映射到了本地环境的8000端口。


      image.png
    2. 在测试号中配置好服务器信息,提交。


      image.png

    扩展知识

    1. 微信测试号的消息传递只支持明文传输,如果有消息加密的需求,那该怎么办?这时就要借助微信公众平台接口调试工具了,接口类型选消息接口调试,接口列表选事件消息,加密调试选安全模式,输入参数就可以进行接口调用了。

      image.png
    2. 有的开发者有真实的微信公众号,想基于微信公众号在本地环境直接开发。由于ngrok的域名被微信限制,所以是无法直接配置的。在配置之前,开发者可以在微信中随机访问一下。比如我这里在微信中访问了上面用到的域名http://7fdb639cca98.ngrok.io

      image.png

    那这种情况是不是就不能用ngrok了呢?办法也是有的。首先你得有一台独立的外网服务器,然后安装好nginx,配置一个反向代理。配置极其简单。

    location / {
        proxy_pass http://7fdb639cca98.ngrok.io;
    }
    

    然后用你外网服务器的域名或者ip替换掉ngrok的域名就可以了。这是我配置好之后的结果。我们会发现域名发生了改变,不是ngrok的地址,变成了我外网服务器的ip地址。


    image.png

    小结

    1. 接收、处理微信的消息、事件可以借助内网穿透工具解决,对于主动发起调用微信接口的方式不会受限制。
    2. 进行服务器配置时,微信会向服务器发起一个验证消息的请求,开发者需要提前实现该接口,否则也是配置不成功的。
    3. 消息加解密传输的代码,微信官方提供了实现。可以直接前往微信公众平台开发-接入查看和下载,更具体的消息加解密方案可以查看消息加解密接入指引

    相关文章

      网友评论

          本文标题:微信公众号后端开发-使用ngrok搭建本地环境

          本文链接:https://www.haomeiwen.com/subject/yfbelltx.html