ขั้นตอนเล็ก ๆ บางอย่างในการพัฒนาอินเทอร์เฟซการแชร์ WeChat เนื้อหาเฉพาะมีดังนี้
1. กำหนดค่าข้อมูลอินเตอร์เฟสสำหรับการตรวจสอบ
รหัสมีดังนี้:
/** * ข้ามไปเข้าถึงที่อยู่ที่ไม่ได้รับการรับรอง * * @param คำขอ * @return หน้าเข้าสู่ระบบ * @throws Exception */@requestmapping (value = "/checkwxdomainurl", method = requestmethod.get) void dheckwxdomainurl (httpservletrequest คำขอ URL ที่อยู่เซิร์ฟเวอร์ที่เติมเต็มและคำขอ GET จะมีลายเซ็นสตริงพารามิเตอร์ = request.getParameter ("ลายเซ็น"); // ลายเซ็นการเข้ารหัส weChat (โทเค็น, timestamp, nonce.) สตริง timestamp = request.getParameter request.getParameter ("echosttr"); // สุ่มสตริง // เรียงลำดับโทเค็นพจนานุกรม, timestamp, nonce string [] params = สตริงใหม่ [] {โทเค็น, timestamp, nonce}; array.sort (params); // splice สตริงพารามิเตอร์สามตัวลงในสตริงสำหรับ SHA1 การเข้ารหัสสตริง cleartext = params [0] + พารามิเตอร์ [1] + พารามิเตอร์ [2]; อัลกอริทึมสตริง = "sha-1"; String sign = สตริงใหม่ (hex.encodehex (messageGeSt.getInstance (อัลกอริทึม) .digest ((cleartext) .getBytes ()), จริง)); // ผู้เขียนได้รับสตริงที่เข้ารหัสด้วยลายเซ็นระบุว่าคำขอมาจาก weChat ถ้า (signature.equals (sign)) {response.getWriter (). พิมพ์ (echosttr); }} catch (exception e) {e.printstacktrace (); }}2.JS การกำหนดค่า
3. รับพารามิเตอร์หน้าแชร์ JS และรับโทเค็นและตั๋วเพื่อเพิ่มลงในแคช
/** * ชื่อวิธี: getWxConfig </br> * คำอธิบายโดยละเอียด: รับข้อมูลการกำหนดค่า weChat </br> * นักพัฒนา: gy * @param Request * @return อธิบายความหมายของค่าคืน * @throws อธิบายเงื่อนไขสำหรับข้อยกเว้นนี้ */@Override แผนที่สาธารณะ วัตถุ> (); string appid = wxConfigure.getAppid (); // จำเป็นตัวระบุที่ไม่ซ้ำกันของสตริงบัญชีอย่างเป็นทางการ requestUrl = request.getRequesturl (). toString (); สตริง accessToken = null; สตริง jsapiticket = null; สตริง url = ""; String Timestamp = long.toString (System.currentTimeMillis () / 1000); // จำเป็นต้องสร้างสตริง timestamp signature noncestr = uuid.randomuuid (). toString (); // จำเป็นต้องสร้างสตริงสุ่มลายเซ็น // ที่นี่เราสอบถามในแคชก่อนและเวลาที่ถูกต้องของการเข้าถึง-token จะต้องตั้งค่าในแคชการค้นหาอินเตอร์เฟสการโทร // redistemplate.opsforvalue () getOperations () ลบ (คำนำหน้า); // AccessToken = (String) redistemplate.opSforValue (). รับ (คำนำหน้า); โทเค็น AccessTokenFromredis = getAccessTokenFromredis (); AccessToken = AccessTokenFromredis.getAccessToken (); if (AccessTokenFromedis.getAccessToken ()! = null) {jsapiticket = (สตริง) redistemplate.opSforValue () รับ (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 ("ตั๋ว"); REDISTEMPLATE.OPSFORVALUE (). SET (Prefixticket, JSapiticket); redistemplate.expire (prefixticket, integer.parseint (wxConfigure.getExpireTime ()), TimeUnit.Seconds); }}} string signature = ""; // โปรดทราบว่าชื่อพารามิเตอร์ที่นี่จะต้องเป็นตัวพิมพ์เล็กทั้งหมดและต้องสั่งซื้อสตริงเครื่องหมาย = "jsapi_ticket =" + jsapiticket + "& noncestr =" + noncestr + "× tamp =" + timestamp + "& url =" + requesturl; ลอง {MessageGeSest Crypt = MessageGeSt.getInstance ("sha-1"); crypt.reset (); crypt.update (sign.getBytes ("UTF-8")); ลายเซ็น = bytetohex (crypt.digest ()); } catch (nosuchalgorithmexception e) {e.printstacktrace (); } catch (unsupportencodingexception e) {e.printstacktrace (); } ret.put ("appid", appid); ret.put ("timestamp", การประทับเวลา); ret.put ("noncestr", noncestr); ret.put ("ลายเซ็น", ลายเซ็น); return ret; }/** * ชื่อวิธี: bytetohex </br> * คำอธิบายโดยละเอียด: สตริงการเข้ารหัสวิธีเสริม </br> * นักพัฒนา: gy </br> * @param hash * @return คำอธิบายของค่าคืนความหมาย * @throws สำหรับ (byte b: hash) {formatter.format ("%02x", b); } string result = formatter.toString (); formatter.close (); ผลการกลับมา; } / ** * รับ AccessToken จาก Redis ระบุค่าสตริงของคีย์เวลาหมดอายุ 7200S * * @param key * @return * / โทเค็นสาธารณะ getAccessTokenFromredis () {โทเค็นโทเค็น = null; string assysytoken = (String) redistemplate.opSforValue (). รับ (wxConfigure.getTokenKey ()); if (null! = AssessToken &&! "". Equals (AssessToken)) {token = token ใหม่ (); token.setAccessToken (AssessToken); โทเค็นกลับมา; } 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); โทเค็นกลับมา; -4. การแนะนำ JS ที่เกี่ยวข้องกับหน้าเว็บ
<script type = "text/javaScript" src = "http://res.wx.qq.com/open/js/jweixin-1.0.0.js"> </pript> <script type = "text/javascript" src = "https://res.wx.wx. type = "text/javascript"> // weChat ข้อมูลและการกำหนดค่าการโทร // weChat ข้อมูลและการกำหนดค่าการโทร var signature = $ ("#signature"). val (); var appid = $ ("#appid"). val (); var appid = $ ("#appid"). val (); var timestamp = $ ("#timestamp"). val (); var noncestr = $ ("#noncestr"). val (); var userId = $ ("#userId"). val (); var productName = 1; การแจ้งเตือน (ลายเซ็น); wx.config ({debug: false, appid: appid, timestamp: timestamp, noncestr: noncestring, ลายเซ็น: ลายเซ็น, jsapilist: ['onmenusharetimeline', 'onmenushareappmessage' wx.ready (function () {var isok = true; wx.checkjsapi ({jsapilist: ['onmenusharetimeline'], ล้มเหลว: ฟังก์ชั่น (res) {แจ้งเตือน ("เวอร์ชัน wechat ต่ำเกินไปและฟังก์ชั่นที่ใช้ร่วมกับเพื่อน // รับสถานะคลิกของปุ่ม "แชร์ไปที่ช่วงเวลา" และปรับแต่งอินเทอร์เฟซเนื้อหาการแชร์ wx.onmenusharetimeline ({หัวข้อ: 'ตอนที่ 6: วิธีการปรับแต่งเมนูบัญชีสาธารณะ WeChat สำหรับการพัฒนาแพลตฟอร์มสาธารณะ WeChat 'http://4d536256.ngrok.io/login', imgurl: 'http://busc.4ggogo.com/media/media/img/home-show-a.png' ความสำเร็จ: ฟังก์ชั่น (res) {Alert (json.stringify (res); $ .ajax ({type: "get", url: 'insertCollectShare', ข้อมูล: {userId: userId,}, ข้อมูล: "json", async: เท็จ, ความสำเร็จ: ฟังก์ชั่น (ข้อมูล) {Alert (200);}, ข้อผิดพลาด: ฟังก์ชัน (data) }); wx.onmenushareappmessage ({title: 'ส่วนที่ 7: วิธีการรับข้อมูลพื้นฐานของผู้ใช้ WeChat ในการพัฒนาแพลตฟอร์มสาธารณะ WeChat', // แบ่งปันชื่อ Desc: "ส่วนที่ 7: วิธีการรับข้อมูลพื้นฐานของผู้ใช้ WeChat ในการพัฒนาแพลตฟอร์มสาธารณะ WeChat ' 'http://busc.4ggogo.com/media/media/img/home-show-a.png', // การแบ่งปันไอคอนประเภท: 'ลิงก์', // การแชร์ประเภท, เพลง, วิดีโอหรือลิงค์, ค่าเริ่มต้นคือ link}); เมนูสำหรับการพัฒนาแพลตฟอร์มสาธารณะ WeChat Public Version ', // การแชร์ชื่อ Desc:' ตอนที่ 6: วิธีการปรับแต่งเมนูบัญชีสาธารณะ WeChat สำหรับการพัฒนาแพลตฟอร์มสาธารณะ WeChat ', // การแบ่งปันคำอธิบาย:' http://4d536256.ngrok.io/login ' 'http://busc.4ggogo.com/media/media/img/home-show-a.png', // แชร์ไอคอนประสบความสำเร็จ: ฟังก์ชั่น () {// ฟังก์ชั่นการเรียกกลับมาทำงานหลังจากผู้ใช้ยืนยันการแชร์}, ยกเลิก: // การแชร์ปุ่ม "// อินเทอร์เฟซ wx.onmenushareweibo ({ชื่อเรื่อง: 'แชร์ไปยัง tencent weibo title', // แชร์ชื่อเรื่อง: 'แบ่งปันไปยัง Tencent Weibo คำอธิบาย', // แชร์ลิงก์คำอธิบาย: 'http://4d536256.ngrok.io/login' 'http://busc.4ggogo.com/media/media/img/home-show-a.png', // แชร์ไอคอนประสบความสำเร็จ: ฟังก์ชั่น () {// ฟังก์ชั่นการเรียกกลับที่ดำเนินการหลังจากผู้ใช้ยืนยันการแชร์}, ยกเลิก: // wx.onmenushareqzone ({title: 'แบ่งปันไปยัง QQ Space Title 11111111111111', // แชร์ชื่อเรื่อง: 'แบ่งปันไปยัง QQ Space Description 2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222 'http://4d536256.ngrok.io/login', imgurl: 'http: //busc.4ggogo.com/media/media/img/home-show-a.png' // การแบ่งปันไอคอน ดำเนินการหลังจากผู้ใช้ยกเลิกการแชร์}});หมายเหตุ: เส้นทางที่ถ่ายโอนคือเส้นทางชื่อโดเมนที่กำหนดค่ามิฉะนั้นไม่สามารถเรียกได้และขนาดภาพไม่สามารถมากกว่า 300K
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น