基于微信微信官方账号开发的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);
}
总结
以上是边肖介绍的微信二次分享错误无效签名的问题及解决方法。希望对你有帮助。如果您有任何问题,请给我留言,边肖将及时回复您。非常感谢您对我们网站的支持!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。