微信js sdk invalid signature

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);

}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值