WeChat js sdk invalid signature

1. Check whether the signature has expired

2. Check whether the url uses encodeURI in js, and change it to encodeURICompent.
The parameter uses json, because authorized forwarding only supports one parameter.

  var last= encodeURIComponent(JSON.stringify(parma));

var pkurl= 'pkSearch.htm?allParameter='+last ;
window.location.href=pkurl;

3. Java code only uses URLEncoder.encode for parameters

4. If yes For the second forwarding, WeChat will add parameters such as wx_ to the browser. These urls cannot be lost, and their parameters must be used.

function sharetoMyFriends(uname,uPic){

   
            var url=window.location.href.split('#')[0];
          

            var link = url;
            var imgUrl = uPic;
            $.ajax({
                url: "share.htm?url ="+link,
                type: "POST",
                async:true,
                cache: false,
                dataType: "json",
                success: function(data){
                    link= data.url;
                    wx.config({
                        debug: false,
                        appId: data.appId,
                        timestamp:data.timeStamp,
                        nonceStr:data.nonceStr,
                        signature:data.signature,
                        jsApiList: [
                            'checkJsApi',
                            'onMenuShareTimeline',
                            'hideOptionMenu',
                            'onMenuShareAppMessage'
                        ]
                    });

                    wx.ready(function(){
                        //wx.hideOptionMenu();/***Hide share menu****/
                        wx.checkJsApi({
                            jsApiList: [
                                'getLocation',
                                'onMenuShareTimeline',
                                'onMenuShareAppMessage'
                            ],
                            success: function (res) {
                                //alert(res.errMsg);
                            }
                        });

                        wx.onMenuShareAppMessage({
                            title: title,
                            desc: desc,
                            link: link,
                            imgUrl: imgUrl,
                            type: 'link',


                            success: function (res) {
                                alert(' Sharing is successful');

                            },
                            cancel: function (res) {
                                //alert('Cancelled');
                            },
                            fail: function (res) {
                               // alert(res.errMsg);
                            }
                        });

    
                        wx.onMenuShareTimeline({
                            title: title,
                            desc: desc,
                            link: link,
                            imgUrl: imgUrl,
                            type: 'link',

                            success: function (res) {
                                alert('分享成功');
                             

                            },
                            cancel: function (res) {
                                //alert('已取消');
                            },
                            fail: function (res) {
                               // alert(res.errMsg);
                            }
                        });

                        wx.error(function (res) {
                            //alert(res.errMsg);
                        });
                    });
                },
                error: function() {
                   // alert('ajax request failed!!!!');
                    return;
                }
            })

}




</script>


  public  void  shareAction(String code,String url, HttpServletRequest request, HttpSession session,HttpServletResponse response){
      try {

          Enumeration enu=request.getParameterNames();


           //业务转发的action
          if(url.contains("searchResult")|| url.contains("pkResult") || url.contains("pkSearch")){
              int ind1= url.indexOf("=");
              String u1=url.substring(0,ind1);
              String url2 =url.substring(ind1+1,url.length());
              url =u1 +"="+ URLEncoder.encode(url2, "utf-8");
          }
//微信追加的 参数

          String paramter ="";
          while(enu.hasMoreElements()){
              String paraName=(String)enu.nextElement();
              String value=request.getParameter(paraName);
              if(!paraName.equals("url")){
                  paramter+=paraName +"=" +value +"&";
              }
          }
          if(paramter.contains("&")){
              paramter= paramter.substring(0,paramter.length()-1);
              url +="&"+paramter;
          }


        String timeStamp = WxConfig.create_timestamp();//时间戳
        String nonceStr = WxConfig.getUUID();//随机字符串,不长于32位
        String signature = WxConfig.getSignature( url, timeStamp, nonceStr);
        request.setAttribute("timeStamp",timeStamp);
        request.setAttribute("nonceStr", nonceStr);
        request.setAttribute("url", url);
        request.setAttribute("signature", signature);
        WXjssdk result = new WXjssdk(timeStamp,nonceStr,signature,url);
        result.setAppId(WxConfig.APPID);

        Gson gson = new Gson();
        String str=gson.toJson(result);
        JsonUtil.printJsonPage(str,response);

      }catch(Exception e){
       log.error("share error",e);

      }
    }

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326653792&siteId=291194637