config:fail,invalid signature 微信分享报错

发布时间 2023-05-30 17:48:43作者: lanwf

奇葩啊奇葩

今天遇到一个奇怪的问题,就是在微信中分享 卡片携带标题以及图片的问题。 

基本配置 去 微信公众平台 都能找到 , 遇到的问题 去百度 大部分都能解。 

 

我的问题 有个别网页能分享出卡片并且也能携带出卡片的标题,但是也有个别网页分享不出标题与图片 做法都一摸一样 ,可恶啊 排查了好久, 还得打开调试模式 "debug:true" 或者 在微信开发工具中可以看到

有问题的网页都提示了同一个错误”config:fail,invalid signature“,哦 原来是签名的问题,   那问题是我之前没问题的网页 也是这种做法啊。  然后我又去看了官网

 

终于我看官网上说url的问题,在生成签名的时候也要拼接请求中的参数(key1=value1&key2=value2…) ,我回去看了一下 ,果然成功能分享出卡片的 都是无参url ,那些携带参数的url全部失效 导致签名失败的问题。

 

我当初的做法是单纯的使用了  request.getRequestURL() 的方法 做了签名参数 ,这也怪自己当初为了省事没细看说明的问题。

改成  request.getRequestURL()  + ” ? “ + request.getQueryString()  即可解决

 

关键代码

     String nonceStr = WXPayUtil.generateNonceStr( );
        set("appId",WeChatUtil.APPID);
        long timestamp = new Date( ).getTime( );
        set("timestamp", timestamp);
        set("nonceStr", nonceStr);
        set("signature", WeChatUtil.getSignature(timestamp + "", nonceStr, getRequest( ).getRequestURL( ).toString( ) + "?"+getRequest().getQueryString()));