报错了 config:invalid signature 用了很多方法都没用的

来源:2-3 验证分享接口以及实现选择相册接口

筱阿东

2018-01-03 21:18

function getJsApiTicket(){
   //如果session中保存有效的jsapi_ticket
   if($_SESSION['jsapi_ticket_expire_time']>time() && $_SESSION['jsapi_ticket']){
       $jsapi_ticket=$_SESSION['jsapi_ticket'];
   }else{
       $access_token=$this->getWxAccessToken();
       $url="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$access_token."&type=jsapi";
       $res=$this->http_curl($url);
       $jsapi_ticket=$res['ticket'];
       $_SESSION['jsapi_ticket']=$jsapi_ticket;
       $_SESSION['jsapi_ticket_expire_time']=time()+7200;
   }

   return $jsapi_ticket;

}

//获取随机码
function getRandCode($num=16){
   $array=array(
       'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
       'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
       '0','1','2','3','4','5','6','7','8','9',
   );
   $tmpstr='';
   $max=count($array);
   for($i=1;$i<=$num;$i++){
       $key =rand(0,$max-1);
       $tmpstr .=$array[$key];
   }
   return $tmpstr;

}

//分享朋友圈
function shareWx(){
   //1.获取jsapi_ticket票据
   $jsapi_ticket=$this->getJsApiTicket();
   $timestamp=time();
   $noncestr=$this->getRandCode();
   $url="http://39.106.125.49/weixin/ThinkPHP/index.php/Home/Index/shareWx";
   //2.获取singnature
   //$signature="jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."&timestamp=".$timestamp."&url=".$url;
   $signature="jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."&amp;timestamp=".$timestamp."&url=".$url;
   $signature= sha1($signature);
   $this->assign('name','筱阿东');
   $this->assign('timestamp',$timestamp);
   $this->assign('noncestr',$noncestr);
   $this->assign('signature',$signature);
   $this->display('share');

}



wx.config({
   debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
   appId: 'wx3192f586241c3c97', // 必填,企业号的唯一标识,此处填写企业号corpid
   timestamp:'<{$timestamp}>' , // 必填,生成签名的时间戳
   nonceStr: '<{$noncestr}>', // 必填,生成签名的随机串
   signature: '<{$signature}>',// 必填,签名,见附录1
   jsApiList: [
       'onMenuShareTimeline',
       'onMenuShareAppMessage'
   ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
wx.ready(function(){
   wx.onMenuShareTimeline({
       title: 'test1', // 分享标题
       link: 'http://www.baidu.com', // 分享链接,该链接域名必须与当前企业的可信域名一致
       imgUrl: 'https://www.baidu.com/img/bdlogo.png', // 分享图标
       success: function () {

           // 用户确认分享后执行的回调函数
       },
       cancel: function () {
           // 用户取消分享后执行的回调函数

       }
   });

   wx.onMenuShareAppMessage({
       title: 'test1', // 分享标题
       desc: 'test baidu', // 分享描述
       link: 'http://www.baidu.com', // 分享链接,该链接域名必须与当前企业的可信域名一致
       imgUrl: 'https://www.baidu.com/img/bdlogo.png', // 分享图标
       type: 'link', // 分享类型,music、video或link,不填默认为link
       dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
       success: function () {
           alert('分享成功');

           // 用户确认分享后执行的回调函数
       },
       cancel: function () {
           alert('请重新分享');
           // 用户取消分享后执行的回调函数
       }
   });
});
wx.error(function(res){

});


我的两个代码都没错吧 那个配置我也改过了 可是为什么我用了好多方法都没有用啊??


写回答 关注

4回答

  • 坐不住的雨伞
    2020-04-17 17:39:17

    我目前是手机上访问就会报签名无效,但是电脑端分享给朋友是成功的,不知道为啥?

  • 猪头6
    2018-05-29 10:22:57

    看看是不是你的域名有问题,怎么直接用的ip?

    那个timestamp不需要加amp吧,上面的怎么注释掉了

    yii2框架代码:

    public function actionWx_share()
        {
            //1.获取jsapi_ticket票据
            $timestamp = time();
            $noncestr  = $this->getRandCode();
            $url       = "http://i.yii6.com/site/wx_share";
            $str       = "jsapi_ticket=" . $this->getJsApiTicket() . "&noncestr=" . $noncestr . "&timestamp=" . $timestamp . "&url=" . $url;
            $signature = sha1($str);
            return $this->renderPartial('share', [
                'timestamp' => $timestamp,
                'noncestr'  => $noncestr,
                'signature' => $signature,
                'name'=>'单身狗的咆哮'
            ]);
        }

  • 如果可以选择性失忆
    2018-05-19 14:50:45

    设置url的时候必须小写

  • 抬山
    2018-02-26 22:50:20

    http://www.thinkphp.cn/code/1568.html 看看这个能不能帮到你

PHP微信公众平台开发高级篇—微信JS-SDK

JS-SDK微信交互引擎,诸多功能提供更优质的网页体验

33774 学习 · 75 问题

查看课程

相似问题