真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java開發(fā)微信分享接口的過程

本篇內(nèi)容介紹了“java開發(fā)微信分享接口的過程”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)專注于陵水黎族網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供陵水黎族營銷型網(wǎng)站建設(shè),陵水黎族網(wǎng)站制作、陵水黎族網(wǎng)頁設(shè)計、陵水黎族網(wǎng)站官網(wǎng)定制、小程序設(shè)計服務(wù),打造陵水黎族網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供陵水黎族網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

微信分享接口的java開發(fā)的一些小步驟,具體內(nèi)容如下

1.配置接口信息進行驗證

java開發(fā)微信分享接口的過程

代碼如下:

  /**
   * 訪問沒認證的地址跳轉(zhuǎn)
   *
   * @param request
   * @return 登錄頁面
   * @throws Exception
   */
  @RequestMapping(value = "/checkWxDomainUrl", method = RequestMethod.GET)
  public void checkWxDomainUrl(HttpServletRequest request) throws Exception {

    try {
      // 開發(fā)者提交信息后,微信服務(wù)器將發(fā)送GET請求到填寫的服務(wù)器地址URL上,GET請求攜帶參數(shù) 
      String signature = request.getParameter("signature");// 微信加密簽名(token、timestamp、nonce。) 
      String timestamp = request.getParameter("timestamp");// 時間戳 
      String nonce = request.getParameter("nonce");// 隨機數(shù) 
      String echostr = request.getParameter("echostr");// 隨機字符串 
      // 將token、timestamp、nonce三個參數(shù)進行字典序排序 
      String[] params = new String[] { TOKEN, timestamp, nonce };
      Arrays.sort(params);
      // 將三個參數(shù)字符串拼接成一個字符串進行sha1加密 
      String clearText = params[0] + params[1] + params[2];
      String algorithm = "SHA-1";
      String sign = new String(Hex.encodeHex(
          MessageDigest.getInstance(algorithm).digest((clearText).getBytes()), true));
      // 開發(fā)者獲得加密后的字符串可與signature對比,標識該請求來源于微信 
      if (signature.equals(sign)) {
        response.getWriter().print(echostr);
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

2.js配置

java開發(fā)微信分享接口的過程

3.獲取分享頁面js需要參數(shù)   其中獲取token、ticket加入緩存

  /**
  * 方法名:getWxConfig
  * 詳述:獲取微信的配置信息 
  * 開發(fā)人員:gy   * @param request   * @return 說明返回值含義   * @throws 說明發(fā)生此異常的條件    */   @Override   public Map getWxConfig(HttpServletRequest request) {     Map ret = new HashMap();     String appId = wXConfigure.getAppId(); // 必填,公眾號的唯一標識     String requestUrl = request.getRequestURL().toString();     String accessToken = null;     String jsapiTicket = null;     String url = "";     String timestamp = Long.toString(System.currentTimeMillis() / 1000); // 必填,生成簽名的時間戳     String nonceStr = UUID.randomUUID().toString(); // 必填,生成簽名的隨機串     //此處先在緩存中查詢,查詢不到在調(diào)用接口查詢 緩存中需要設(shè)置access-token的有效時間 //    redisTemplate.opsForValue().getOperations().delete(prefix);     // accessToken = (String) redisTemplate.opsForValue().get(prefix);     Token accessTokenFromRedis = getAccessTokenFromRedis();     accessToken = accessTokenFromRedis.getAccessToken();     if (accessTokenFromRedis.getAccessToken() != null) {       jsapiTicket = (String) redisTemplate.opsForValue().get(prefixTicket);       if (jsapiTicket==null) {         url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accessToken             + "&type=jsapi";         JSONObject json = httpRequest(url, "GET", null);         if (json != null) {           jsapiTicket = json.getString("ticket");           redisTemplate.opsForValue().set(prefixTicket, jsapiTicket);           redisTemplate.expire(prefixTicket, Integer.parseInt(wXConfigure.getExpireTime()),               TimeUnit.SECONDS);         }     }      }     String signature = "";     // 注意這里參數(shù)名必須全部小寫,且必須有序     String sign = "jsapi_ticket=" + jsapiTicket + "&noncestr=" + nonceStr + "×tamp="         + timestamp + "&url=" + requestUrl;     try {       MessageDigest crypt = MessageDigest.getInstance("SHA-1");       crypt.reset();       crypt.update(sign.getBytes("UTF-8"));       signature = byteToHex(crypt.digest());     } catch (NoSuchAlgorithmException e) {       e.printStackTrace();     } catch (UnsupportedEncodingException e) {       e.printStackTrace();     }     ret.put("appId", appId);     ret.put("timestamp", timestamp);     ret.put("nonceStr", nonceStr);     ret.put("signature", signature);     return ret;   }   /**   * 方法名:byteToHex
  * 詳述:字符串加密輔助方法 
  * 開發(fā)人員:gy 
  * @param hash   * @return 說明返回值含義   * @throws 說明發(fā)生此異常的條件    */   private static String byteToHex(final byte[] hash) {     Formatter formatter = new Formatter();     for (byte b : hash) {       formatter.format("%02x", b);     }     String result = formatter.toString();     formatter.close();     return result;   }   /**    * 從redis中獲取accessToken,指定key的String值,過期時間7200s    *     * @param key    * @return    */   public Token getAccessTokenFromRedis() {     Token token = null;     String assesstoken = (String) redisTemplate.opsForValue().get(wXConfigure.getTokenKey());     if (null != assesstoken && !"".equals(assesstoken)) {       token = new Token();       token.setAccessToken(assesstoken);       return token;     } else {       token = CommonWxUtil.getToken(wXConfigure.getAppId(), wXConfigure.getSecret());       redisTemplate.opsForValue().set(wXConfigure.getTokenKey(), token.getAccessToken());       redisTemplate.expire(wXConfigure.getTokenKey(), Integer.parseInt(wXConfigure.getExpireTime()),           TimeUnit.SECONDS);       return token;     }   }

4.頁面的相關(guān)js的引入



 



 // 微信信息的以及調(diào)用的配置
// 微信信息的以及調(diào)用的配置
  var signature=$("#signature").val();
  var appId=$("#appId").val();
  var timestamp=$("#timestamp").val();
  var nonceStr=$("#nonceStr").val();
  var userId=$("#userId").val();
  var productName=1;
  
  alert(signature);
wx.config({
  debug: false, 
  appId:appId , 
  timestamp:timestamp, 
  nonceStr: nonceStr, 
  signature:signature,
  jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] 
});

 wx.ready(function(){
   var isOk = true;
   wx.checkJsApi({
     jsApiList: ['onMenuShareTimeline'],
     fail: function (res) {
       alert("微信版本太低,不支持分享給朋友的功能!");
       isOk = false;
     },
     success: function (res) {
       alert("支持QQ分享。");
     }
   });  
     // 獲取“分享到朋友圈”按鈕點擊狀態(tài)及自定義分享內(nèi)容接口
      wx.onMenuShareTimeline({
        title: '第六篇 :微信公眾平臺開發(fā)實戰(zhàn)Java版之如何自定義微信公眾號菜單', 
        desc: '第六篇 :微信公眾平臺開發(fā)實戰(zhàn)Java版之如何自定義微信公眾號菜單', 
        link: 'http://4d536256.ngrok.io/login', 
        imgUrl: 'http://busc.4ggogo.com/media/media/img/home-show-a.png', 
        success: function (res) { 
           alert(JSON.stringify(res));
           if (res.errMsg=='shareTimeline:ok') {
           /*   $.ajax({
                type:"get",
                url:'insertCollectShare',
                data:{
                  userId:userId,
                },
                dataType:"json",
                async: false,
                success:function(data){
                 alert(200);
                },
                error:function(data){
                  var rUrl = xhr.getResponseHeader('CONTENTPATH');
                  window.location.href = rUrl;
                }
              }); */
             // 用戶確認分享后執(zhí)行的回調(diào)函數(shù)
              /* window.location.href = contextRoot + 'insertCollectShare?userId=' + userId; */
          } 
        },
        cancel: function (res) { 
          // 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
           alert(res);
        }
      });
     
     // 獲取“分享給朋友”按鈕點擊狀態(tài)及自定義分享內(nèi)容接口
      wx.onMenuShareAppMessage({
        title: '第七篇 :微信公眾平臺開發(fā)實戰(zhàn)Java版之如何獲取微信用戶基本信息', // 分享標題
        desc: "第七篇 :微信公眾平臺開發(fā)實戰(zhàn)Java版之如何獲取微信用戶基本信息", // 分享描述
        link:'http://4d536256.ngrok.io/login',
        imgUrl: 'http://busc.4ggogo.com/media/media/img/home-show-a.png', // 分享圖標
        type: 'link', // 分享類型,music、video或link,不填默認為link
      });
      
      //獲取“分享到QQ”按鈕點擊狀態(tài)及自定義分享內(nèi)容接口
      wx.onMenuShareQQ({
        title: '第六篇 :微信公眾平臺開發(fā)實戰(zhàn)Java版之如何自定義微信公眾號菜單', // 分享標題
        desc: '第六篇 :微信公眾平臺開發(fā)實戰(zhàn)Java版之如何自定義微信公眾號菜單', // 分享描述
        link: 'http://4d536256.ngrok.io/login', // 分享鏈接
        imgUrl: 'http://busc.4ggogo.com/media/media/img/home-show-a.png', // 分享圖標
        success: function () { 
          // 用戶確認分享后執(zhí)行的回調(diào)函數(shù)
        },
        cancel: function () { 
          // 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
        }
      });
      
      //獲取“分享到騰訊微博”按鈕點擊狀態(tài)及自定義分享內(nèi)容接口
      wx.onMenuShareWeibo({
        title: '分享到騰訊微博標題', // 分享標題
        desc: '分享到騰訊微博描述', // 分享描述
        link: 'http://4d536256.ngrok.io/login', // 分享鏈接
        imgUrl: 'http://busc.4ggogo.com/media/media/img/home-show-a.png', // 分享圖標
        success: function () { 
          // 用戶確認分享后執(zhí)行的回調(diào)函數(shù)
        },
        cancel: function () { 
          // 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
        }
      });
      
      //獲取“分享到QQ空間”按鈕點擊狀態(tài)及自定義分享內(nèi)容接口
      wx.onMenuShareQZone({
        title: '分享到QQ空間標題11111111111111111', // 分享標題
        desc: '分享到QQ空間描述2222222222222222222', // 分享描述
        link: 'http://4d536256.ngrok.io/login', 
        imgUrl:'http://busc.4ggogo.com/media/media/img/home-show-a.png', // 分享圖標
        success: function () { 
          // 用戶確認分享后執(zhí)行的回調(diào)函數(shù)
        },
        cancel: function () { 
          // 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
        }
      });
 });

 

“java開發(fā)微信分享接口的過程”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!


文章題目:java開發(fā)微信分享接口的過程
本文URL:http://weahome.cn/article/psgghj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部