javascript - 微信转发出去的链接添加参数,导致二次分享失败!
天蓬老师
天蓬老师 2017-04-11 09:43:51
[JavaScript讨论组]

比如说,我是开发者,我想要微信中分享的内容是自己自定义的,所以使用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);
    })
}
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(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了,我当初也是遇到这种问题,后来换成服务端直接输出到页面就好了; 你可以试试

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号