`

微信js sdk invalid signature

 
阅读更多
1. 检查签名是否过期

2.检查 url 是否js 使用 encodeURI, 改为 encodeURICommpent.
参数使用 json,因为授权转发只支持一个参数。

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

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

3. Java 代码只对参数使用 URLEncoder.encode

4. 如果是二次转发,微信会再浏览器追加 wx_等参数 这些url 不能丢,要使用它们的参数。

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();/***隐藏分享菜单****/
                        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('分享成功');

                            },
                            cancel: function (res) {
                                //alert('已取消');
                            },
                            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);

      }
    }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics