开发微信公众号遇到的问题

此处记录项目中的问题, 以此帮助自己成长!!

  1. springmvc 拦截根目录时, 无法访问文件MP_verify_fAnwMsm7TpQ9HJax.txt
  2. 测试公众号切换线上公众号, 提示redirect_uri错误

springmvc 拦截根目录时, 无法访问文件配置如下:

  • web.xml
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

spring-mvc.xml

...
<mvc:interceptors>
  <mvc:interceptor>
    <mvc:mapping path="/**" />
    <mvc:exclude-mapping path="/statics/**" />
    <bean class="com.heitong.web.interceptors.LoginInterceptor" />
  </mvc:interceptor>
</mvc:interceptors>

<!-- 过滤静态资源 -->
<mvc:resources location="/statics/" mapping="/statics/**"/>
...

由于公众号要求在根目录可以访问授权文件MP_verify_fAnwMsm7TpQ9HJax.txt,

...
3、将文件MP_verify_fAnwMsm7TpQ9HJax.txt(点击下载)上传至填写域名或路径指向的web服务器(或虚拟主机)的目录
(若填写域名,将文件放置在域名根目录下,例如wx.qq.com/MP_verify_fAnwMsm7TpQ9HJax.txt;
若填写路径,将文件放置在路径目录下,例如wx.qq.com/mp/MP_verify_fAnwMsm7TpQ9HJax.txt),
并确保可以访问。
...

而war包是部署到服务器根目录, 也就导致springmvc会拦截根目录所有请求
tomcat:server.xml

<Context 
    docBase="projectName" 
    path="/yuezang" 
    reloadable="false"
    source="org.eclipse.jst.j2ee.server:projectName"
    />

解决方案:
在启用tomcat默认处理器

<!-- 先配置*.txt的默认处理器 -->
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.txt</url-pattern>
</servlet-mapping>

<!-- 再配置springmvc处理器 -->
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

测试公众号切换线上公众号, 提示redirect_uri错误

由于之前一直是在本地开发, 用ngrok穿墙做公众号测试, APP_ID/SECURITY一直用的测试账号, 转到线上后只在公众号中设置了网页授权域名, 而忘记修改程序中的APP_ID/SECURITY, 公众号页面一直提示 redirect_uri 错误, 纠结半天, 一直在想:

为啥测试时没有任何问题, 到了线上就不行了 (# ̄~ ̄#)

解决思路一直朝 redirect_uri 方向, 发现 redirect_uri 地址没有任何问题, 域名绑定也OK. 当找到问题后发现提示也没有错误:

APP_ID 公众号唯一标识
SECURITY 程序访问通行证

用测试公众号的 APP_ID 重定向到线上项目 callback 当然就是 redirect_uri 参数错误了.

解决方案:
在配置文件中(project.properties)配置测试or线上标识, 程序中保留两套 APP_ID/SECURITY, 根据不同标识启用不同配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值