Maison  >  Article  >  interface Web  >  Configuration jssdk de partage WeChat frontal : solution d'erreur de signature non valide

Configuration jssdk de partage WeChat frontal : solution d'erreur de signature non valide

php中世界最好的语言
php中世界最好的语言original
2018-03-10 09:44:015745parcourir

Cette fois, je vais vous apporter la solution à l'erreur de signature de la configuration jssdk : signature invalide partagée sur WeChat frontal La solution à l'erreur de signature de la configuration jssdk : signature invalide partagée sur WeChat frontal Quoi. sont les précautions , et ce qui suit est le combat réel. Jetons un coup d'œil au cas.

À propos de la configuration jssdk du partage frontal de WeChat : erreur de signature invalide

Je viens de finir de l'écrire sur WeChat ces derniers jours. Vous ne le croirez peut-être pas quand je le dis. vous. J'ai écrit un partage WeChat et je l'ai utilisé ensemble pendant 2 semaines. Il y a eu toutes sortes de tristesse dans le processus. Au début, le grand frère du backend m'a aidé à rédiger le visa backend, mais cela n'a pas fonctionné, j'ai voulu lui demander de le changer, mais plus tard, l'entreprise a eu un. projet qui avait hâte d'être mis en ligne, et il n'y avait pas de temps. Le produit était nécessaire de toute urgence, je n'avais pas le choix, alors j'ai commencé à gérer le backend par moi-même

D'accord, sans plus tarder, commençons par. le texte principal

Tout d'abord, pour les trucs de WeChat, il est sûr de lire la documentation du SDK WeChat

Parce que je suis une personne front-end, donc j'écris uniquement du code sur le front-end . Je couvre également le back-end. À la fin de l'article, je joindrai le code du back-end que j'ai modifié

$.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可以在这里更新签名。
        });
    };

Le code de la partie back-end

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 码升序排序

L'heure ici a également une chaîne aléatoire transmise à la réception, et le lien URL est transmis de la réception au backend. Le backend utilise cette URL pour effectuer l'encodage suivant

N'oubliez pas de transmettre. L'URL transmise au backend doit être exactement la même que le lien actuel. N'oubliez pas que l'URL transmise au backend doit être exactement la même que le lien actuel. le lien actuel.

  $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);

Je pense que vous avez lu le cas dans cet article. Vous maîtrisez la méthode. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture connexe :

Entrée frontale vers CSS3

Comment axios crée un client de requête HTTP basé sur une promesse

Dégradé de couleur CSS

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn