广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >如何解决微信二次分享报错invalid signature的问题
  • 687
分享到

如何解决微信二次分享报错invalid signature的问题

2024-04-02 19:04:59 687人浏览 独家记忆
摘要

这篇文章主要为大家展示了“如何解决微信二次分享报错invalid signature的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决微信二次分享报错

这篇文章主要为大家展示了“如何解决微信二次分享报错invalid signature的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决微信二次分享报错invalid signature的问题”这篇文章吧。

基于微信公众号开发的h6页面(使用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 . '&timestamp=' . $timestamp . '&url=' . $url);
    $shareConfig['appId']     = '';//此处为appId
    $shareConfig['timestamp']   = $timestamp;
    $shareConfig['noncestr']    = $noncestr;
    $shareConfig['signature']   = $signature;
    $shareConfig['url']      = $url;
    echo json_encode($shareConfig);
  }

以上是“如何解决微信二次分享报错invalid signature的问题”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网node.js频道!

--结束END--

本文标题: 如何解决微信二次分享报错invalid signature的问题

本文链接: https://www.lsjlt.com/news/67861.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作