![](https://img2022.cnblogs.com/blog/520218/202208/520218-20220823214644524-1892929368.png)
这个地址输入账号密码:admin/123456 后会跳转到微信授权地址(不知道是不是这样叫 = =,可能说的不太专业),我经理反应过来说,正确访问地址应该是:192.168.2.5:{项目端口}/{项目名}/redirect.html
然后微信地址就会拼一个appid 和 redirect_uri 的请求,顺带说一下,这个项目要用微信打开才行。
第二坑:微信授权要用公网地址
不同之前恢复的项目,直接在内网服务器把项目(一般是tomcat)跑起来,以“公司内IP+端口/{项目名}” 就能访问。
因为要跟微信地址(open.weixin.qq.com)进行交互,纯 “公司内网+端口” 这种方式是不行的,涉及到一个授权的配置。我经理于是叫我用ngrok代理该服务的端口到公网域名上(其实一开始我是建议直接在线上服务器、用某个测试域名进行恢复,因为觉得ngrok反向代理贼慢,server端的带宽只有5M,开发测试经常吐槽,不过我经理图恢复)。
如下图:
这里我是代理8182端口(刚好这个摇一摇活动tomcat端口就是8182)
访问地址就从
192.168.2.5:{项目端口}/{项目名}/redirect.html
变成:
https://sxxxxme.ngrok.xxx.cn/{项目名}/redirect.html
代码目录的redirect.html 也要修改
这里有个问题(对我来说是个未解之谜),自从在ngrok 服务端弄了个泛域名https证书后(需要nginx配置,nginx用80端口,转发到ngrok 60端口,ngrok服务启动http监听60,https监听63),开启ngrok客户端会不定期,自带60或63端口(不是每次都这样),实际上去掉60、63端口才对。
ngrok启动命令:
cd /ngrok ./bin/ngrokd -tlsKey="assets/server/tls/snakeoil.key" -tlsCrt="assets/server/tls/snakeoil.crt" -domain="ngrok.xxx.cn" -httpAddr=":60" -httpsAddr=":63" -tunnelAddr=":4443" >> /var/log/ngrok.log &
############### 上面是小小插曲,过掉。
1、申请和服务器文件修改wechat.appID和wechat.appSecret
微信测试号的ID貌似是有失效时间的,为了怕年代久远不能用(2019年),写到代码文件的appID需要在测试号公众平台重新申请,并修改配置(这个项目是:classes/application.properties):wechat.appId 和 wechat.appSecret
![](https://img2022.cnblogs.com/blog/520218/202208/520218-20220823213241783-965857563.png)
我微信还要关注它,下面“加一”就是本人啦,哈哈哈哈哈~~~
3、网站授权回调页面域名,也是改到ngork反向代理内网服务的公网地址
网页授权:
第三坑:
欢喜地打开这个地址,一直报错。我经理查了很多资料,也试过换别的微信号去做测试号申请,也以为会不会是我重启tomcat服务没有生效(反复叫我试了2~3次)
最后他留意到一个细节,这个就是问题突破口
带了个端口60,然后他尝试在浏览器的这个url上去掉端口60的字样,也是相同报错:redirect_uri 域名与后台配置不一致。
我给他说这个60端口是ngrok客户端开启,时不时自带的,他当时已经很绝望,不太相信是这个ngrok代理内网地址问题。此时,老板也过来跟他讨论别的事。我想着既然都没啥思路了,试下无妨,就趁他们谈话的空档,快速从线上恢复这个项目,用一个线上的公网地址去转发代理这个摇一摇活动,然后在微信测试号修改配置,完美解决。
终于成功了~~~ ^___^
只能感叹,两个水瓶座(我跟他都是水瓶座滴,真缘分也~)能抵一个诸葛亮,他留意到这个细节,我知道这个细节的来源,哈哈哈哈哈~~~~
这个带https证书的ngrok还是蛮坑的(以前不用http的ngork还是挺靠谱的),平时自己玩玩就好,真正测试还是少用为妙