基于微信微信官方账号开发的h5页面(使用jssdk接口)被用户A分享给用户B,当用户B再次分享该页面时,已经无法成功分享。本文主要介绍微信二次分享举报签名无效的问题及解决方法。有需要的朋友可以参考一下。
基于微信微信官方账号开发的h5页面(使用jssdk接口)被用户A分享给用户B,当用户B再次分享该页面时,已经无法成功分享。问题是用户B收到的分享链接和用户a打开的链接不一样。
用户a的链接是
http://test.com/test.html
b .用户收到的连接
http://test.com/test.htmlfrom=singlemessage
From=singlemessage是微信客户端为了区分分享来源,重新链接后自动添加的标记。再次分享时,需要用encodeURIComponent处理js代码中自动获取的连接,再用urldecode处理后台收到的url。
js和php的示例代码如下:
注意ajax,用post,用get据说不转义(get方法我没测试过)。
javascript,javascript
函数share(){
var now URL=window . location . href;
var now urlo=now URL . split()[0];
$.ajax({
类型: post ,
URL:“* * * * * * * * * * * * * * * * * * * * *”,//后端接口
数据类型: json ,
data:{ URL :encode uri component(nowurr)},//注意now urr是encode这里;
成功:函数(数据){
wx.config({
Debug: false,//调试模式
AppId: data.appId,//微信官方账号AppId
时间戳:data.timestamp,//时间戳
non castr:data . non castr,//生成签名的随机字符串
签名:data.signature,//签名
jsApiList : [
更新AppMessageShareData ,
更新时间线共享数据,
onMenuShareAppMessage ,
onMenuShareTimeline ,
选择XPay ,
显示选项菜单,
隐藏菜单项,
显示菜单项,
onMenuShareTimeline ,
onMenuShareAppMessage ,
]//必需,要使用的JS接口列表
});
Wx.ready(function () {//需要在用户可以单击共享按钮之前调用。
wx.updateAppMessageShareData({
标题: ,//共享标题
Desc: ,//分享描述
Link: nowurlo,//自动获取(在上面的js代码中)
ImgUrl: ,//共享图标
成功:函数(){
}
});
wx.updateTimelineShareData({
标题: ,//共享标题
链接:nowurlo,自动获取(在上面的js代码中)
ImgUrl: ,//共享图标
成功:函数(){
},
});
});
}
});
}
Php代码
公共函数generateSignature(){
$ timestamp=time();
$ jsapi ticket=;//在此获取jsapi_ticket
$ non castr=MD5(uniqid(microtime(true),true));//我用的是非中心。
$ URL=urldecode(I( post . URL ));
$signature=sha1(jsapi_ticket=)。$jsapiTicket。noncestr=。$ noncestr。时间戳=。$时间戳。url=。$ URL);
$ share config[ appId ]= ;//此处为appId
$ share config[ timestamp ]=$ timestamp;
$ share config[ non centr ]=$ non centr;
$ share config[ signature ]=$ signature;
$ share config[ URL ]=$ URL;
echo JSON _ encode($ share config);
}
总结
以上是边肖介绍的微信二次分享错误无效签名的问题及解决方法。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!