uniapp微信H5开发本地调试方案

前言

痛点:

1)原生的H5,并不能方便地提供类似扫一扫的功能

2)原生H5的扫一扫也需要部署到https

ps:本文基于mac系统,windows用户可以根据思路来进行调整

现有方案评估

花生壳等内网穿透工具

  • 需要频繁实名验证
  • 花生壳服务商等域名在手机微信内会显示被举报,无法访问

目前的方案

修改host+charles正向代理+nginx方向代理的模式

原理图如下:
image

基本步骤

我们可信域名为:
家长端:mobile-parent.adacampus.com
教师端:mobile-teacher.adacampus.com

  1. 在微信公众号或者企业微信应用主页填写可信域名(已开启)
  2. 本地开启服务
  3. 修改本地host,把域名解析为本地的服务
  4. 安装并配置nginx, 可以成功通过http访问
  5. 为nginx配置ssl证书,包括建立CA,CA签名
  6. 电脑端安装Charles抓包软件,手机端开启代理并安装Charles证书

本地服务开启

分别开启家长端和教师端在localhost:8080和localhost:8081端口

修改host指向

sudo vi /etc/hosts

host文件中添加以下几行

127.0.0.1	localhost
127.0.0.1	mobile-teacher.adacampus.com
127.0.0.1	mobile-parent.adacampus.com

尝试访问: http://www.example.com:8080(注意尚未开启https), 应该能看到页面了,

如果不成,ping一下

ping www.example.com
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.051 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.158 ms

nginx反向代理

使用nginx来做反向代理,实现https://www.mobile-parent.adacampus.com的访问

安装nginx

官网:nginx安装

取决于系统以及安装过程,配置文件大概在以下几个位置

/usr/local/nginx/conf, /etc/nginx或者 /usr/local/etc/nginx

生成ssl证书

安装mkcert

cd到nginx安装目录的的ssl文件夹目录下

分别运行

mkcert -key-file key.pem -cert-file cert.pem mobile-parent.adacampus.com mobile-parent.adacampus.com
mkcert -key-file key.pem -cert-file cert.pem mobile-teacher.adacampus.com mobile-teacher.adacampus.com

出现下列信息就ok了

Created a new certificate valid for the following names 📜

  • “mobile-parent.adacampus.com”
  • “mobile-parent.adacampus.com”

The certificate is at “cert.pem” and the key at “key.pem” ✅

nginx配置

配置文件示例,家长端和教师端分别对应80808081


worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    
    # HTTPS server
    
    server {
       listen       443 ssl;
       server_name  mobile-parent.adacampus.com;
       proxy_buffering off;

       ssl_certificate      /usr/local/etc/nginx/ssl/mobile-parent.adacampus.com.pem;
       ssl_certificate_key  /usr/local/etc/nginx/ssl/mobile-parent.adacampus.com-key.pem;

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

       location / {
           root   html;
           index  index.html index.htm;
           proxy_pass          http://localhost:8080;
       }
    }

    server {
       listen       443 ssl;
       server_name  mobile-teacher.adacampus.com;
       proxy_buffering off;

       ssl_certificate      /usr/local/etc/nginx/ssl/mobile-teacher.adacampus.com.pem;
       ssl_certificate_key  /usr/local/etc/nginx/ssl/mobile-teacher.adacampus.com-key.pem;

       ssl_session_cache    shared:SSL:1m;
       ssl_session_timeout  5m;

       ssl_ciphers  HIGH:!aNULL:!MD5;
       ssl_prefer_server_ciphers  on;

       location / {
           root   html;
           index  index.html index.htm;
           proxy_pass          http://localhost:8081;
       }
    }
}

在浏览器中输入https://www.mobile-parent.adacampus.com,如果浏览器没有提示安全警告⚠️的话,就ok了

配置charles

需要分别在电脑和手机端安装charles证书, 具体可以参考这里

完成之后,在手机微信上访问,https://www.mobile-parent.adacampus.com,如果能够抓包,那就证明可以成功访问电脑上开启的本地服务了

踩坑汇总

把server文件夹下的东西作为配置文件了,所以无法识别
image.png

https://stackoverflow.com/questions/46127025/nginx-https-server-barfing-on-crt-and-key-files

本文首发于个人博客前端开发笔记,由于笔者能力有限,文章难免有疏漏之处,欢迎指正

  • 12
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在uniapp开发H5登录微信公众号并进行联调,有以下几个步骤: 1. 获取微信开发者账号和相关配置信息:首先需要在微信开放平台注册并创建一个开发者账号,然后创建一个微信公众号,并获取相应的AppID和AppSecret等配置信息。 2. 在uniapp项目中配置相关插件:在uniapp项目的manifest.json文件中,添加对应的插件配置,如"@dcloudio/uni-mp-weixin"插件。然后在项目的App.vue中通过uni.login方法获取登录凭证code,并调用uni.request方法发送请求到服务器获取用户的openid和session_key。 3. 前端与后端的联调:根据服务器返回的用户openid和session_key,在前端进行相关的业务逻辑处理,如展示用户信息、跳转到其他页面等。其中,服务器端需要处理用户的登录请求,并返回openid和session_key等信息给前端。 4. 微信公众号授权设置:在微信公众号后台设置中,配置网页授权域名和回调地址,并将uniapp项目的H5链接添加到公众号菜单中。 5. 测试和调试:完成以上步骤后,进行测试和调试,确保登录功能在H5中正常使用。可以通过调试工具、日志打印等方式进行定位和解决问题。 总结:在uniapp开发H5登录微信公众号的联调过程中,需要进行微信开发者账号和相关配置的准备,配置相关插件和设置,前端与后端的联调,以及进行测试和调试。通过这些步骤,可以实现在uniapp项目中登录微信公众号并进行H5联调。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值