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);
}
}
分享到:
相关推荐
解决"invalid signature"签名错误问题,首先需要理解微信JS-SDK的签名生成机制。签名是由一系列参数生成的,包括有效的jsapi_ticket、随机字符串noncestr、时间戳timestamp和网页的URL。开发者需要根据这些参数,...
微信JS-SDK Demo代码 invalid signature错误详解在readme里面
微信分享JSSDK-invalidsignature签名错误的解决方案.docx
微信JS-SDK分享接口,可通过javascript文件引入方式来实现自定义分享。 具体说明:https://blog.csdn.net/gaofei880219/article/details/80147575
微信分享invalid signature签名错误,是很多开发者在集成微信JS-SDK时可能遇到的问题,本文将深入解析这一错误及其解决方法。 ### 1. 签名算法的确认 当遇到invalid signature错误时,首先需要确认使用的签名算法...
以下将详细介绍如何在Vue.js中使用微信扫一扫并解决invalid signature问题。 首先,我们需要在Vue组件中添加一个触发微信扫一扫的按钮。在模板部分,创建一个按钮,并在其点击事件中调用相应的处理方法: ```html ...
主要介绍了微信 jssdk 签名错误invalid signature的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
这是因为iOS和Android在处理微信SDK时的表现可能会有所不同,了解当前的运行环境对于实施相应的兼容性策略至关重要。 ### 微信内嵌分享与签名 微信JSSDK提供了丰富的API来进行内嵌分享,例如分享到朋友圈、发送给...
最近做公众号网页开发,使用微信 jssdk 页面签名时 IOS 中一直报错,这才刚开始就被这只拦路虎拦住了,报错如下: 然而 Android 和开发者工具中好得很,没有任何问题: 既然提示 签名非法 ,那就是签名有问题咯,...
微信分享java实现, 解决了invalid signature 的错误 特别是微信JS-SDK 自定义分享:第一次被分享(可以正常显示标题图片等),然后被分享人在次分享时就会签名无效?的问题。
在iOS上的微信环境中,Vue单页面应用(SPA)在使用Vue-Router的history模式时,调用微信JSSDK的相关API,如扫码、分享等,可能会遇到签名失败的问题。这是因为Vue-Router在进行路由切换时,会操作浏览器的历史记录,...
官方文档描述: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62 确认url是页面完整的url(请在当前页面alert(location.href.split(‘#’)[0])确认),包括’http(s):confused_...
在微信平台进行网页分享时,我们通常需要调用微信的JSSDK(JavaScript SDK)以实现一些高级接口功能,比如分享到朋友圈、分享给朋友等。传统的方式是将PHP代码与HTML混合在一起,但这样会导致前后端耦合度高,代码...
### 利用Django+Wechat-Python-SDK创建微信服务器接入的方法 #### 版本说明与环境配置 本文档将详细介绍如何通过Django框架结合Wechat-Python-SDK实现微信服务器的接入功能。该方法适用于希望将自己的网站或应用与...