1. 检查签名是否过期
2.检查 url 是否js 使用 encodeURI, 改为 encodeURICommpent.
参数使用 json,因为授权转发只支持一个参数。
var last= encodeURIComponent(JSON.stringify(parma));
var pkurl= 'pkSearch.htm?allParameter='+last ;
window.location.href=pkurl;
3. Java 代码只对参数使用 URLEncoder.encode
4. 如果是二次转发,微信会再浏览器追加 wx_等参数 这些url 不能丢,要使用它们的参数。
function sharetoMyFriends(uname,uPic){
var url=window.location.href.split('#')[0];
var link = url;
var imgUrl = uPic;
$.ajax({
url: "share.htm?url="+link,
type: "POST",
async:true,
cache: false,
dataType: "json",
success: function(data){
link= data.url;
wx.config({
debug: false,
appId: data.appId,
timestamp:data.timeStamp,
nonceStr:data.nonceStr,
signature:data.signature,
jsApiList: [
'checkJsApi',
'onMenuShareTimeline',
'hideOptionMenu',
'onMenuShareAppMessage'
]
});
wx.ready(function(){
//wx.hideOptionMenu();/***隐藏分享菜单****/
wx.checkJsApi({
jsApiList: [
'getLocation',
'onMenuShareTimeline',
'onMenuShareAppMessage'
],
success: function (res) {
//alert(res.errMsg);
}
});
wx.onMenuShareAppMessage({
title: title,
desc: desc,
link: link,
imgUrl: imgUrl,
type: 'link',
success: function (res) {
alert('分享成功');
},
cancel: function (res) {
//alert('已取消');
},
fail: function (res) {
// alert(res.errMsg);
}
});
wx.onMenuShareTimeline({
title: title,
desc: desc,
link: link,
imgUrl: imgUrl,
type: 'link',
success: function (res) {
alert('分享成功');
},
cancel: function (res) {
//alert('已取消');
},
fail: function (res) {
// alert(res.errMsg);
}
});
wx.error(function (res) {
//alert(res.errMsg);
});
});
},
error: function() {
// alert('ajax request failed!!!!');
return;
}
})
}
</script>
public void shareAction(String code,String url, HttpServletRequest request, HttpSession session,HttpServletResponse response){
try {
Enumeration enu=request.getParameterNames();
//业务转发的action
if(url.contains("searchResult")|| url.contains("pkResult") || url.contains("pkSearch")){
int ind1= url.indexOf("=");
String u1=url.substring(0,ind1);
String url2 =url.substring(ind1+1,url.length());
url =u1 +"="+ URLEncoder.encode(url2, "utf-8");
}
//微信追加的 参数
String paramter ="";
while(enu.hasMoreElements()){
String paraName=(String)enu.nextElement();
String value=request.getParameter(paraName);
if(!paraName.equals("url")){
paramter+=paraName +"=" +value +"&";
}
}
if(paramter.contains("&")){
paramter= paramter.substring(0,paramter.length()-1);
url +="&"+paramter;
}
String timeStamp = WxConfig.create_timestamp();//时间戳
String nonceStr = WxConfig.getUUID();//随机字符串,不长于32位
String signature = WxConfig.getSignature( url, timeStamp, nonceStr);
request.setAttribute("timeStamp", timeStamp);
request.setAttribute("nonceStr", nonceStr);
request.setAttribute("url", url);
request.setAttribute("signature", signature);
WXjssdk result = new WXjssdk(timeStamp,nonceStr,signature,url);
result.setAppId(WxConfig.APPID);
Gson gson = new Gson();
String str=gson.toJson(result);
JsonUtil.printJsonPage(str,response);
}catch(Exception e){
log.error("share error",e);
}
}
分享到:
相关推荐
主要介绍了微信js sdk invalid signature签名错误问题的解决方法,结合实例形式分析了微信签名错误问题相关解决方法,需要的朋友可以参考下
微信JS-SDK Demo代码 invalid signature错误详解在readme里面
主要介绍了微信 jssdk 签名错误invalid signature的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
微信JS-SDK分享接口,可通过javascript文件引入方式来实现自定义分享。 具体说明:https://blog.csdn.net/gaofei880219/article/details/80147575
微信分享JSSDK-invalidsignature签名错误的解决方案.docx
最近在搞微信公众号开发,进行到网页开发部分被坑了一天,最坑的问题就是invalid signature,而网上大部分解答这个问题的都没有说清楚,都直接丢文档。博主认为这样很不好。本文是博主结合自身遇到的问题所写,整个...
前一段时间做了一个微信分享的东西,而且前端框架用的是VUE,被这个东西快折磨疯了,一个列表页,一个详情页,分享详情页的时候,会报错invalid signature签名错误。 当时就不淡定了,然后开始了排坑之路,根据官网...
再和前台对接的时候一直报错:invalid url domain 在网上查找了很多资料,有说端口的问题,也有其它各种原因的,一大堆,最后我发现以上的说法都不准确,这是我配置的地址(错误的地址) 把配置地址的http://去掉...
主要介绍了vue.js中使用微信扫一扫解决invalid signature问题(推荐),本文通过实例代码给出解决方法,代码简单易懂非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
基于微信公众号开发的h5页面(使用jssdk接口),由用户A分享给用户B,用户B再次分享这个页面时,不能成功分享。这篇文章主要介绍了微信二次分享报错invalid signature问题及解决方法,需要的朋友可以参考下
主要介绍了微信jssdk踩坑之签名错误invalid signature,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了VUE解决微信签名及SPA微信invalid signature问题(完美处理),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
微信分享java实现, 解决了invalid signature 的错误 特别是微信JS-SDK 自定义分享:第一次被分享(可以正常显示标题图片等),然后被分享人在次分享时就会签名无效?的问题。
微信支付失败问题总结 包括invalid signature和 chooseWXPay fail