资讯专栏INFORMATION COLUMN

微信二次分享报错,invalid signature

awesome23 / 958人阅读

摘要:基于微信公众号开发的页面使用接口,由用户分享给用户,用户再次分享这个页面时,不能成功分享。

基于微信公众号开发的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

相关文章

  • 微信二次分享报错invalid signature

    摘要:基于微信公众号开发的页面使用接口,由用户分享给用户,用户再次分享这个页面时,不能成功分享。 基于微信公众号开发的h5页面(使用jssdk接口),由用户A分享给用户B,用户B再次分享这个页面时,不能成功分享。问题出在用户B收到的分享链接与用户A打开的链接不同A用户的链接为 http://test.com/test.html B用户收到的连接 http://test.com/test.h...

    e10101 评论0 收藏0
  • H5页面二次分享

    摘要:对于页面来说二次分享还是蛮重要的,毕竟还是微信发出去之后习惯性的使用自带的分享功能。通篇看完的话,基本上能避过很多坑记得微信文档习惯把一些坑写在后面,不放在一起先说说,怎么微信怎么做二次分享文档地址,通过引入官方。 对于H5页面来说二次分享还是蛮重要的,毕竟qq还是微信发出去之后习惯性的使用自带的分享功能。和PC端不同,PC直接复制地址了。前两天在做请柬,踩了不少的雷,个人开发和公司开...

    evin2016 评论0 收藏0
  • H5页面二次分享

    摘要:对于页面来说二次分享还是蛮重要的,毕竟还是微信发出去之后习惯性的使用自带的分享功能。通篇看完的话,基本上能避过很多坑记得微信文档习惯把一些坑写在后面,不放在一起先说说,怎么微信怎么做二次分享文档地址,通过引入官方。 对于H5页面来说二次分享还是蛮重要的,毕竟qq还是微信发出去之后习惯性的使用自带的分享功能。和PC端不同,PC直接复制地址了。前两天在做请柬,踩了不少的雷,个人开发和公司开...

    layman 评论0 收藏0
  • 微信二次分享

    摘要:接下来通过详细的步骤介绍如何接入微信二次分享操作。不要尝试在中使用异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用的回包会还没有返回用户点击分享到朋友圈已分享已取消此时微信二次分享就已经大功告成了。 微信二次分享 效果演示 showImg(https://segmentfault.com/img/remote/1460000016895951); 如何运行项目 ...

    Betta 评论0 收藏0
  • 微信二次分享

    摘要:接下来通过详细的步骤介绍如何接入微信二次分享操作。不要尝试在中使用异步请求修改本次分享的内容,因为客户端分享操作是一个同步操作,这时候使用的回包会还没有返回用户点击分享到朋友圈已分享已取消此时微信二次分享就已经大功告成了。 微信二次分享 效果演示 showImg(https://segmentfault.com/img/remote/1460000016895951); 如何运行项目 ...

    NusterCache 评论0 收藏0

发表评论

0条评论

awesome23

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<