这篇文章主要为大家展示了“如何解决微信二次分享报错invalid signature的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决微信二次分享报错invalid signature的问题”这篇文章吧。
成都创新互联是一家专业提供江岸企业网站建设,专注与成都做网站、网站制作、HTML5建站、小程序制作等业务。10年已为江岸众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。基于微信公众号开发的h6页面(使用jssdk接口),由用户A分享给用户B,用户B再次分享这个页面时,不能成功分享。问题出在用户B收到的分享链接与用户A打开的链接不同
A用户的链接为
http://test.com/test.html
B用户收到的连接
http://test.com/test.html&from=singlemessage
from=singlemessage是微信客户端为了区分分享来源再链接后自动添加的标记,再次分享时,需要在js代码中对自动获取的连接进行encodeURIComponent处理,后台再对收到的url进行urldecode处理。
js与php示例代码如下:
注意ajax,用的post,用get据说不用转义(get方式本人未做测试)
js代码
function share(){ var nowurl = window.location.href; var nowurlo = nowurl.split('&')[0]; $.ajax({ type : "post", url : "***********************", //后端接口 dataType : "json", data : { 'url': encodeURIComponent(nowurl) }, // 注意此处对nowurl进行encode; success : function (data) { wx.config({ debug : false, //调试模式 appId : data.appId, //公众号appid timestamp : data.timestamp, //时间戳 nonceStr : data.noncestr, //生成签名的随机串 signature : data.signature, //签名 jsApiList : [ 'updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareAppMessage', 'onMenuShareTimeline', 'chooseWXPay', 'showOptionMenu', "hideMenuItems", "showMenuItems", "onMenuShareTimeline", 'onMenuShareAppMessage', ] // 必填,需要使用的JS接口列表 }); wx.ready(function () { //需在用户可能点击分享按钮前就先调用 wx.updateAppMessageShareData({ title : '', // 分享标题 desc : '', // 分享描述 link : nowurlo, // 自动获取(上面js代码中) imgUrl : '', // 分享图标 success : function () { } }); wx.updateTimelineShareData({ title : '', // 分享标题 link : nowurlo, 自动获取(上面js代码中) imgUrl : '', // 分享图标 success : function () { }, }); }); } }); }
php代码
public function generateSignature(){ $timestamp = time(); $jsapiTicket = ;//此处获取jsapi_ticket $noncestr = md5(uniqid(microtime(true),true));//我用的noncestr $url = urldecode(I('post.url')); $signature = sha1('jsapi_ticket=' . $jsapiTicket . '&noncestr=' . $noncestr . '×tamp=' . $timestamp . '&url=' . $url); $shareConfig['appId'] = '';//此处为appId $shareConfig['timestamp'] = $timestamp; $shareConfig['noncestr'] = $noncestr; $shareConfig['signature'] = $signature; $shareConfig['url'] = $url; echo json_encode($shareConfig); }
以上是“如何解决微信二次分享报错invalid signature的问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联成都网站设计公司行业资讯频道!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款