微信網頁開發分享
阿新 • • 發佈:2019-01-03
首先提供一個微信官方地址點選開啟連結
早期web專案中經常用到微信分享功能,現在整理一下,供記憶與分享,開發環境為JAVA +H5。
1、微信的開發環境不在多說,大概為:使用已備案的域名,設定“公眾號設定”的三項域名、
設定開發者密碼(AppSecret)、除錯通過核心服務地址。
2、公眾平臺以access_token為介面呼叫憑據,來呼叫介面,所有介面的呼叫需要先獲取access_token,access_token在2小時內有效,過期需要重新獲取,但1天內獲取次數有限,開發者需自行儲存。線上測試地址點選開啟連結
介面地址:JSAPI_Access_token
= "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";
提供必要引數: String tokenURL=JSAPI_Access_token+"&appid="+appid+"&secret="+secret;3、用第一步拿到的access_token 採用http GET方式請求獲得jsapi_ticket(有效期7200秒,開發者必須在自己的服務全域性快取jsapi_ticket);
String JSAPI_TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi";
以上JS-SDK介面是基礎,比較簡單,注意細節即可。
4、簽名計算
5、WEB前端js函式封裝,頁面載入是註冊分享事件public static Map<String, String> sign(String jsapi_ticket, String url) { Map<String, String> ret = new HashMap<String, String>(); String nonce_str = echostr(); String timestamp = getTimeStamp(); String string1; String signature = ""; string1 = "jsapi_ticket=" + jsapi_ticket + "&noncestr=" + nonce_str + "timestamp=" + timestamp + "&url=" + url; //System.out.println(string1); try { MessageDigest crypt = MessageDigest.getInstance("SHA-1"); crypt.reset(); crypt.update(string1.getBytes("UTF-8")); signature = byteToHex(crypt.digest()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } ret.put("url", url); ret.put("jsapi_ticket", jsapi_ticket); ret.put("nonceStr", nonce_str); ret.put("timestamp", timestamp); ret.put("signature", signature); return ret; }
function wxSharecfg(response, setFx) { var Request = new Object(); Request = GetRequest(); var d = Request["demo"]; wx.config({ debug: false, appId: response.appId, timestamp: response.timestamp, nonceStr: response.nonceStr, signature: response.signature, jsApiList: [ 'checkJsApi', 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone' ] }); wx.ready(function () { var shareData = { imgUrl: urlStr ,//圖片地址 link: url, title: "標題", desc: setFx.desc, success: function (res) { //alert('已分享'); }, fail: function (res) { //'分享失敗!' } }; wx.onMenuShareAppMessage(shareData); wx.onMenuShareTimeline(shareData); wx.onMenuShareQQ(shareData); wx.onMenuShareWeibo(shareData); wx.onMenuShareQZone(shareData); }); }