比如说,我是开发者,我想要微信中分享的内容是自己自定义的,所以使用JS-SDK进行了设置,但现在出现了问题:
第一个用户在使用的时候,觉得这个东西好,打算分享给第二个用户,分享时弹出的界面是开发者自定义的,第二个用户也可以打开这个链接;
然后第二个人用户也觉得这个东西好,想分享给第三个用户,但是分享时弹出的界面不是开发者自定义的,而是微信自带的分享界面和分享的内容
分析原因好像是因为微信分享出去的链接添加了参数,所以导致了签名的失败。我也在该网站上看到一则相同的帖子,但是我试过了好像还是不行!
这是那个帖子的地址:https://segmentfault.com/q/1010000002588452
我是在前端将转码后的url传到后台,那么后台需要先解码之后再进行签名吗?
下面附上我的代码
var getUrl = encodeURIComponent(window.location.href.split('#')[0]);
function share(){
var url = "/login/get_jsapi_ticket"; //后台接口
var arg = {};
arg.url = getUrl; //getUrl 传给后台的url
ajaxJsonp(url, arg, getSucc, 'get', getFa); //ajax函数
}
function getSucc(res){
wx.config({
debug: false,
appId: res.data.appid,
timestamp:res.data.timestamp,
nonceStr: res.data.noncestr,
signature: res.data.signature,
jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage','showOptionMenu']
});
wx.ready(function(){
wx.showOptionMenu();
wx.onMenuShareAppMessage({
title: '快乐购',
desc: '我正在关注快乐购,优惠多多,你也快来关注吧',
//link: 'http://XXX/webView/index.html',
link:getUrl,
imgUrl: 'http://xxx/webView/resource/images/fanwushi.jpg',
success: function (res) {},
cancel: function (res) {},
fail: function (res) {
console.log('自定义给朋友失败:'+JSON.stringify(res));
}
});
})
wx.error(function(res){
console.log(res);
})
}
你上面给的那个链接,是因为在微信环境中没有使用微信的
jssdk
控制分享,所以再次分享的时候,跟本不会走自定义的;关于微信环境中开发的网站,你只要调用
jssdk
了,分享就不会有问题的,就算二次分享,只要你分享的页面jssdk
是支行成功的就可以分享成功;建议你先开启
debug
模式,然后再微信环境下看看是否签名有误;还有
这块的配置信息,你
res.data
是如何获取的,如果是通过ajax
请求后台接口返回的话,貌似是不行的,这块的配置信息要服务端直接渲染给前端才行,因为如果是请求接口返回的话,页面初始化已经完成,就不会再去操作微信的jssdk
了,我当初也是遇到这种问题,后来换成服务端直接输出到页面就好了; 你可以试试