微信二次分享报错invalid signature问题及解决方法


Posted in Javascript onApril 01, 2019

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

总结

以上所述是小编给大家介绍的微信二次分享报错invalid signature问题及解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
键盘 keycode的值 javascript时触发事件时很有用的要素
Nov 02 Javascript
JavaScript执行效率与性能提升方案
Dec 21 Javascript
Jquery对select的增、删、改、查操作
Feb 06 Javascript
js中DOM三级列表(代码分享)
Mar 20 Javascript
angularjs实现首页轮播图效果
Apr 14 Javascript
js实现数字递增特效【仿支付宝我的财富】
May 05 Javascript
对vue v-if v-else-if v-else 的简单使用详解
Sep 29 Javascript
微信小程序实现搜索历史功能
Mar 26 Javascript
vue-i18n结合Element-ui的配置方法
May 20 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
Sep 06 Javascript
json字符串对象转换代码实例
Sep 28 Javascript
Vue表单提交点击事件只允许点击一次的实例
Oct 23 Javascript
JS中的防抖与节流及作用详解
Apr 01 #Javascript
微信小程序 slot踩坑的解决
Apr 01 #Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
Apr 01 #Javascript
VUE脚手架的下载和配置步骤详解
Apr 01 #Javascript
详解JavaScript中的函数、对象
Apr 01 #Javascript
Vue递归组件+Vuex开发树形组件Tree--递归组件的简单实现
Apr 01 #Javascript
基于vue框架手写一个notify插件实现通知功能的方法
Mar 31 #Javascript
You might like
论坛头像随机变换代码
2006/10/09 PHP
apache和php之间协同工作的配置经验分享
2013/04/08 PHP
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
2015/10/21 PHP
PHP反射机制原理与用法详解
2017/02/15 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
常用简易JavaScript函数
2009/04/09 Javascript
javaScript 简单验证代码(用户名,密码,邮箱)
2009/09/28 Javascript
基于jquery的商品展示放大镜
2010/08/07 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
获取django框架orm query执行的sql语句实现方法分析
2019/06/20 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
新闻专业推荐信范文
2013/11/20 职场文书
护士自我鉴定总结
2014/03/24 职场文书
班子个人四风问题整改措施
2014/10/04 职场文书
医院领导班子查摆问题对照检查材料思想汇报
2014/10/08 职场文书
2014年团支部工作总结
2014/11/17 职场文书
企业2014年度工作总结
2014/12/10 职场文书
2015大学生求职信范文
2015/03/20 职场文书
故意伤害罪辩护词
2015/05/21 职场文书
保姆聘用合同
2015/09/21 职场文书
大学军训心得体会800字
2016/01/11 职场文书
CSS3实现的3D隧道效果
2021/04/27 HTML / CSS
JS Canvas接口和动画效果大全
2021/04/29 Javascript
新手初学Java网络编程
2021/07/07 Java/Android