摘要:基于微信公众号开发的页面使用接口,由用户分享给用户,用户再次分享这个页面时,不能成功分享。
基于微信公众号开发的h5页面(使用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); }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/109287.html
摘要:基于微信公众号开发的页面使用接口,由用户分享给用户,用户再次分享这个页面时,不能成功分享。 基于微信公众号开发的h5页面(使用jssdk接口),由用户A分享给用户B,用户B再次分享这个页面时,不能成功分享。问题出在用户B收到的分享链接与用户A打开的链接不同A用户的链接为 http://test.com/test.html B用户收到的连接 http://test.com/test.h...
摘要:接下来通过详细的步骤介绍如何接入微信二次分享操作。不要尝试在中使用异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用的回包会还没有返回用户点击分享到朋友圈已分享已取消此时微信二次分享就已经大功告成了。 微信二次分享 效果演示 showImg(https://segmentfault.com/img/remote/1460000016895951); 如何运行项目 ...
阅读 2242·2021-09-30 09:47
阅读 2193·2021-09-26 09:55
阅读 2874·2021-09-24 10:27
阅读 1495·2019-08-27 10:54
阅读 943·2019-08-26 13:40
阅读 2468·2019-08-26 13:24
阅读 2381·2019-08-26 13:22
阅读 1698·2019-08-23 18:38