ホームページ >ウェブフロントエンド >jsチュートリアル >フロントエンド WeChat 共有 jssdk 構成: 無効な署名署名エラーの解決策

フロントエンド WeChat 共有 jssdk 構成: 無効な署名署名エラーの解決策

php中世界最好的语言
php中世界最好的语言オリジナル
2018-03-10 09:44:015899ブラウズ

今回はフロントエンドWeChatで共有されたjssdk config:invalid署名の署名エラーの解決策をお届けします注意点は何ですか?実際のケースを見てみましょう。

フロントエンド WeChat 共有 jssdk config:invalid signal 署名エラーについて

ここ数日で 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 は現在のリンクとまったく同じである必要があります。

  $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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。