概要:
眼看年底快放假了,结果一个BUG瞬间收回放假的心思,下面简要介绍一下这个BUG:
在前后端分离的前提下,使用微信公众号开发XXX微信公众平台,结合微信开放文档实现授权操作,在第二步“根据 code 获取网页授权 access_token 和 openid”时出现了“the trustanchors parameter must be non-empty”致命错误,这确实让人崩溃。
内容:
最终发现这个问题是证书引起的,结合微信证书更新java证书即可解决该问题,下面是解决步骤:
1、下载微信证书:
访问微信官方文档提供的“根据 code 获取网页授权 access_token 和 openid”连接“https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code”,如下图所示:
点击“Connection is secure”
点击“Certificate valid”
点击“复制到文件” -> “下一页”
选择Base64编码方式,下载以.cer结尾的证书文件保存到本地。下载证书的方式各有千秋,该方法适者以用之。
2、更新Java cacerts:
以管理员身份打开CMD,执行以下命令(命令中的cerPath表示cer证书的存放位置;cacertsPath表示jre环境下的cacerts,eg:C:\Program Files\Java\jre1.8.0_221\lib\security\cacerts所在文件路径):
keytool -importcert -trustcacerts -file "cerPath" -alias ca_alias -keystore "cacertsPath" -storepass changeit
执行即可。