Einige kleine Schritte bei der Entwicklung der WeChat Sharing -Schnittstelle sind der spezifische Inhalt wie folgt
1. Konfigurieren Sie Schnittstelleninformationen zur Überprüfung
Der Code ist wie folgt:
/** * Spring, um auf die nicht authentifizierte Adresse zuzugreifen Ausgefüllte Serveradressen-URL und die GET-Anforderung trägt die Parameter String Signature = Request.getParameter ("Signatur"); // WeChat-Verschlüsselungssignatur (Token, Zeitstempel, Nonce. Request.GetParameter ("echostr"); // zufällige String // sortieren Dictionary -Token, Timestamp, Nonce String [] params = new String [] {Token, Timestamp, Nonce}; Arrays.sort (params); // Drei Parameterzeichenfolgen in einen String für SHA1 -Verschlüsselungszeichenfolge ClearText = Params [0] + Parames [1] + Params [2]; String algorithmus = "SHA-1"; String sign = new String (hex.encodEhex (MessagedIGest.getInstance (Algorithmus) .Digest ((ClearText) .getBytes ()), true)); // Der Autor erhält die verschlüsselte Zeichenfolge mit der Signatur und identifiziert, dass die Anforderung von WeChat if (Signature.equals (Signal)) {response.getWriter (). Print (echostr); }} catch (Ausnahme e) {e.printstacktrace (); }}2.JS -Konfiguration
3. Holen Sie sich die Parameter der Freigabe.
/** * Methodenname: getwxconfig </br> * Detaillierte Beschreibung: WeChat -Konfigurationsinformationen erhalten </br> * Entwickler: gy * @param request * @return die Bedeutung des Rückkehrwerts * @Throws Erklären Sie die Bedingung für diese Ausnahme */@Override Public Karte <String, Objekt> GetwxConFig (HttpserDer -starken) {map <String, Objekt. Objekt> (); String appid = wxConfigure.getAppid (); // Erforderlich, die eindeutige Kennung des offiziellen Konto String requesturl = request.getRequesturl (). ToString (); String accessToken = null; String jsapiticket = null; String url = ""; String timestamp = long.toString (System.currentTimemillis () / 1000); // Erforderlich, generieren Sie die Signature Timestamp String noncestr = uUid.randomuuid (). ToString (); // Erforderlich, generieren Sie die Signatur-zufällige Zeichenfolge // Hier stellen wir zuerst im Cache ab, und die gültige Zeit von Access-Token muss in der CALL-Schnittstelle abfragen // redistemplate.opsforValue (). GetOperations (). Delete (Präfix); // AccessToken = (String) redISTemplate.opsforValue (). get (Präfix); Token AccessTokenFromredis = getAccessTokenFromredis (); AccessToken = AccessTokenFromredis.getAccessToken (); if (AccessTokenFromredis.getAccessToken ()! if (jsapiticket == null) {url = "https://api.weixin.qq.com/cgi-ner/ticket/getticket?access_token=" + accessToken + "& type = jsapi"; JsonObject json = httprequest (URL, "get", null); if (json! = null) {jsapiticket = json.getString ("Ticket"); redistemplate.opsforValue (). set (Präfixticket, jsapiticket); redistemplate.expire (Präfixticket, Integer.ParseInt (wxConfigure.getExpiretime ()), TimeUnit.seconds); }}} String Signature = ""; // Beachten Sie, dass die Parameternamen hier alle Kleinbuchstaben sein müssen und String Sign = "JSAPI_TICKET =" + JSAPICTICKET + "& NONCESTR =" + NONCESTR + "× TAMP =" + TIMESTAMP + "& url =" + Requesturl; probieren {MessagedIGest crypt = MessagedIGest.getInstance ("SHA-1"); crypt.reset (); Crypt.Update (sign.getBytes ("utf-8")); Signature = bytetohex (crypt.Digest ()); } catch (nosuchalgorithmException e) {e.printstacktrace (); } catch (unportedenCodingException e) {e.printstacktrace (); } ret.put ("Appid", Appid); ret.put ("timestamp", timestamp); ret.put ("noncester", noncestre); ret.put ("Signatur", Signatur); Return Ret; }/** * Methodenname: bytetohex </br> * Detaillierte Beschreibung: String -Verschlüsselungshilfsmethode </br> * Entwickler: Gy </br> * @param Hash * @return Erklärung des Rückwerts Die Rückgabewert * @WOWS Erklärung der Bedingung für diese Ausnahme */private statische String -String -Bytetohex (endgültig) (] abschließend (] Hader [] Hader [] Hader -Hader -Hader. für (Byte B: Hash) {Formatter.format ("%02x", b); } String result = Formatter.toString (); formatter.close (); Rückgabeergebnis; } / ** * AccessToken von Redis erhalten, geben Sie den String -Wert des Schlüssels an, Ablaufzeit 7200S * * @param key * @return * / public token getAccessTokenFromredis () {token token = null; String AssessToken = (String) redistemplate.opsforValue (). Get (wxConfigure.getTokenKey ()); if (null! = evalentToken &&! ". token.setAccessToken (AssessToken); Rückgabe -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); Rückgabe -Token; }}4. Einführung von Seiten-bezogenen JS
<script type = "text/javaScript" src = "http://res.wx.qq.com/open/js/jweixin-1.0.0.js"> </script> <script type = "text/javascript" " src = "https://res.wx.qq.com/open/js/jwexin-1.0.0.js"> </script> <script type = "text/javaScript"> // WeChat-Informationen und Anrufkonfiguration // WeChat-Informationen und Anrufkonfiguration var Signature = $ ("#Signature"). var appid = $ ("#appid"). val (); var appid = $ ("#appid"). val (); var timestamp = $ ("#timestamp"). val (); var noncestr = $ ("#noncestern"). val (); var userID = $ ("#userId"). val (); var productName = 1; Alert (Signature); wx.ready (function () {var isok = true; wx.checkjsapi ({jsapilist: ['onmenusharetimeline'], fail: function (res) {alert ("Wechat -Version ist zu niedrig, und die Funktion mit Freunden wird nicht unterstützt!"); // den Klickstatus der Schaltfläche "Teilen an Momente teilen" erhalten und die Sharing -Inhaltsschnittstelle wx.onMenusharetimeline anpassen ({Titel: 'Teil 6: Wie man das Menü der WeChat Public Account für die praktische Java -Version von WeChat Public -Public -Public -Version der praktischen Java -Version der Wechat Public -Version der Wechat -Plattform der Wechat -Version der Wechat -Plattform der WeChat -Version der Wechat -Link: Link: 'http://4d536256.ngrok.io/login', imgurl: 'http://busc.4ggogo.com/media/Media/img/home-show-a.png', Erfolg: Funktion (res) {alert (json.stringify); $.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; } }); wx.onMenuShareAppMessage({ title: 'Part 7: How to obtain basic information of WeChat users in the development of WeChat public platform', // Share title desc: "Part 7: How to obtain basic information of WeChat users in the development of WeChat public platform', // Share description link:'http://4d536256.ngrok.io/login', imgUrl: 'http://busc.4ggogo.com/media/media/img/home-show-a.png', // icon type: 'link', // type type, musik, video oder link ist link}); Public Accountmenü für die praktische Java -Version der WeChat Public Platform Development ', // Teilen von Titel des Teilens:' Teil 6: Wie man das Menü öffentlicher Konto des WeChat -Account für die praktische Java -Version von WeChat Public Platform Development anpassen ', // Beschreibung Link:' http://4d536256.ngrok.io/login 'http://busc.4ggogo.com/media/media/img/home-show-a.png', // Icon Erfolg: Funktion () {// Callback-Funktion, die nach dem Nutzungsnutzern ausgeführt wird, bestätigt die Freigabe des Teilens} und -Abhuge} //. Schnittstelle WX.onMenushareWeibo ({Titel: 'Teile an Tencent Weibo Title', // Title Desc: 'Teile an Tencent Weibo Beschreibung', // Beschreibung Link: 'http:///4d536256.ngrok.io/login', // Link IMGURL TEILE IMGURL: 'http://busc.4ggogo.com/media/media/img/home-show-a.png', // Icon Erfolg: Function () {// Callback-Funktion, die nach dem Nutzer ausgeführt wird. wx.onmenushareqzone ({title: 'teile an QQ Space Titel 111111111111111', // Title Desc: 'Teile an QQ Space Beschreibung 22222222222222222222222222222222222222222 22222222222222222222222222222222222222222 22222222222222222222222222222222222222222 22222222222222222222222222222222222222222 'http://4d536256.ngrok.io/login', imgurl: 'http: //busc.4ggogo.com/media/media/img/home-show-a.png', // Sharing Icon Success: Funktion () {// Die CALLBACK-Funktion bestätigt die nach dem Callback ausgeführte CALL-Funktion. ausgeführt, nachdem der Benutzer die Freigabe abgebrochen hat}});Hinweis: Der übertragene Pfad ist der konfigurierte Domänennamenpfad, ansonsten kann er nicht aufgerufen werden und die Bildgröße kann nicht größer als 300k sein
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.