微信转发出去的链接添加参数,导致二次分享失败!

新手上路,请多包涵

比如说,我是开发者,我想要微信中分享的内容是自己自定义的,所以使用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);
    })
}
阅读 12.5k
1 个回答

你上面给的那个链接,是因为在微信环境中没有使用微信的jssdk控制分享,所以再次分享的时候,跟本不会走自定义的;

关于微信环境中开发的网站,你只要调用jssdk了,分享就不会有问题的,就算二次分享,只要你分享的页面jssdk是支行成功的就可以分享成功;

建议你先开启debug模式,然后再微信环境下看看是否签名有误;

还有

wx.config({
    debug: false,
    appId: res.data.appid,
    timestamp:res.data.timestamp,
    nonceStr: res.data.noncestr,
    signature: res.data.signature,
    jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage','showOptionMenu']
});

这块的配置信息,你res.data是如何获取的,如果是通过ajax请求后台接口返回的话,貌似是不行的,这块的配置信息要服务端直接渲染给前端才行,因为如果是请求接口返回的话,页面初始化已经完成,就不会再去操作微信的jssdk了,我当初也是遇到这种问题,后来换成服务端直接输出到页面就好了; 你可以试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题