>  기사  >  웹 프론트엔드  >  프런트 엔드 WeChat 공유 jssdk 구성:잘못된 서명 서명 오류 해결 방법

프런트 엔드 WeChat 공유 jssdk 구성:잘못된 서명 서명 오류 해결 방법

php中世界最好的语言
php中世界最好的语言원래의
2018-03-10 09:44:015819검색

이번에는 프론트엔드 WeChat에서 공유된 jssdk config:잘못된 서명의 서명 오류에 대한 해결 방법을 알려드립니다. 실제 사례를 살펴보겠습니다.
프런트엔드 WeChat 공유 jssdk 구성 정보:잘못된 서명 서명 오류

저는 지난 며칠 동안 WeChat에 글쓰기를 마쳤습니다. 믿기지 않으실 수도 있지만, 제가 WeChat에 글을 쓰고 2주 동안 공유했습니다. 그 과정에서 온갖 서운함이 있었어요. 처음에는 백엔드에 있는 큰 형님이 백엔드 비자 작성을 도와주셨는데, 바꿔달라고 했더니 안 되더라고요. 급하게 필요한 제품이라 어쩔 수 없이 혼자서 백엔드를 처리하기 시작했습니다.

자, 이제 본문부터 시작하겠습니다

먼저 WeChat 관련 내용은 WeChat SDK 문서를 읽어보세요

저는 프론트엔드이기 때문에 프론트엔드에 대한 코드만 작성하고 백엔드도 다 다루었습니다. 글, 제가 직접 변경한 백엔드 코드를 첨부하겠습니다

$.ajax({
        type: "post",
        dataType: 'json',
        url: '接口链接',
        data: {
            url: urld
        },
        success: function(conf) {
            console.log(conf);
            configWxAPI(conf);
            var conf = conf.url;            return conf;
        },
        error: function(event, XMLHttpRequest, ajaxOptions, thrownError) {            
        }
    });

    //配置权限
    function configWxAPI(conf) {
        wx.config({
            debug: false, //开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端
            //打开,参数信息会通过log打出,仅在pc端时才会打印
            appId: "唯一的ID", //必填,公众号的唯一标识
            timestamp: conf.timestamp, //必填,生成签名的时间戳
            nonceStr: conf.nonceStr, //必填,生成签名的随机串
            signature: conf.signature, //必填,签名
            jsApiList: [                
                'onMenuShareTimeline',                'onMenuShareAppMessage',                'onMenuShareQQ',                'onMenuShareWeibo',                'previewImage',
                
            ] //必填,需要使用的JS接口列表,也就是配置你想使用的调用接口
        });
//      微信分享
        wx.ready(function() {
          //分享的图片
            var imgUrl = ""
                      //分享朋友
            wx.onMenuShareAppMessage({
                title: "标题",
                desc: "内容简介",
                link: "分享链接",
                imgUrl: imgUrl,
                success: function() {
                    //分享成功之后执行的回调函数
                },
                cancel: function() {
                    //取消分享之后执行的回调函数
                }
            });
                             //分享朋友圈
            wx.onMenuShareTimeline({
                title: "标题",
                desc: "内容简介",
                link: "分享链接",
                imgUrl: imgUrl,
                success: function() {
                    //分享成功之后执行的回调函数
                },
                cancel: function() {
                    //取消分享之后执行的回调函数
                }
            });
        });
        wx.error(function(conf) {
            console.log(conf);
            // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
        });
    };

백엔드 부분의 코드

public function getSignPackage() {    
    if(IS_POST){        if(!I('post.url')) $this->ajaxReturn(array('status'=>0,'msg'=>'请输入当前的URL'));
        $jsapiTicket = $this->getJsApiTicket();
          //这句代码微信SDK上面没有介绍,但是用来签证的url里面就&后面会自动带有&,所以这里用了php的字符串替换
        $url =  str_replace("&","&",I('post.url'));

        $timestamp = time();
        $nonceStr = $this->createNonceStr();
    
        // 这里参数的顺序要按照 key 值 ASCII 码升序排序

여기서 시간과 임의의 문자열이 프론트엔드로 전달되고, URL 링크도 프론트에서 전달됩니다. 백엔드로 전달되고 백엔드에서 이 URL을 통해 다음 인코딩이 수행됩니다. 백엔드로 전달된 URL은 현재 링크와 정확히 동일해야 합니다. 현재 링크를 백엔드에 전달해야 합니다. URL은 현재 링크와 정확히 동일해야 합니다.

  $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
    $signature = sha1($string);
    $signPackage = array(    "jsapiTicket" =>$jsapiTicket,      "appId"     => $this->appId,      "nonceStr"  => $nonceStr,      "timestamp" => $timestamp,      "url"       => $url,      "signature" => $signature,      "rawString" => $string
    );    $this->ajaxReturn($signPackage);

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 기타 관련 기사는 PHP 중국어 웹사이트에 있습니다!

관련 읽기:

프런트 엔드 CSS3 시작하기

axios Promise를 기반으로 HTTP 요청 클라이언트를 만드는 방법

Css 그라데이션 색상

위 내용은 프런트 엔드 WeChat 공유 jssdk 구성:잘못된 서명 서명 오류 해결 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.