Beberapa langkah kecil dalam pengembangan antarmuka berbagi weChat, konten spesifiknya adalah sebagai berikut
1. Mengkonfigurasi Informasi Antarmuka untuk Verifikasi
Kodenya adalah sebagai berikut:
/** * Melompat untuk mengakses alamat yang tidak terautentikasi * * @param Permintaan * @Return halaman login * @throws Exception */@RequestMapping (value = "/checkwxdomainUrl", metode = requestMethod.get) public reverwxomainurl (httpserverRequest requect information {httpserverRequest permintaan will {try {httpserverRequest) lemparan {cobalah {try {httpserVLequest permintaan wrowse {httpserverRequest) lemparan {cobalah {try {httpserver revandquest) LOVE Expland {httpserVLequest) URL Alamat Server yang diisi, dan permintaan GET membawa parameter string Signature = request.getParameter ("Signature"); // WeChat Encryption Signature (token, timestamp, nonce.) String timestamp = request.getParameter ("timestamp"); // string timestamp nonce = request.getParameter ("nonce"));/ NOMORE/ NOMOR ech = LoSamp nonce = request.getParameter ("nonce")); request.getParameter ("echostr"); // random string // sortir token kamus, timestamp, string nonce [] params = string baru [] {token, timestamp, nonce}; Arrays.sort (params); // splice tiga string parameter ke dalam string untuk string enkripsi sha1 cleartext = params [0] + params [1] + params [2]; Algoritma string = "sha-1"; String Sign = New String (hex.encodehex (MessageSageSt.getInstance (algoritma) .gigest ((clearText) .getBytes ()), true))); // Penulis memperoleh string terenkripsi dengan tanda tangan, mengidentifikasi bahwa permintaan berasal dari weChat if (Signature.equals (tanda)) {response.getWriter (). Print (echoStr); }} catch (Exception e) {e.printstacktrace (); }}2. Konfigurasi JS
3. Dapatkan halaman berbagi parameter JS, dan dapatkan token dan tiket untuk ditambahkan ke cache
/** * Metode Nama: getWxConfig </br> * Deskripsi terperinci: Dapatkan informasi konfigurasi weChat </br> * pengembang: gy * @param permintaan * @return Jelaskan arti dari nilai pengembalian * @throws menjelaskan kondisi untuk pengecualian ini, hashq. Objek> (); String appId = wxconfigure.getAppId (); // Diperlukan, pengidentifikasi unik dari string akun resmi RECANCTURL = request.getRequesturl (). ToString (); String accessToken = null; String jsapiticket = null; String url = ""; String timestamp = long.toString (System.currentTimeMillis () / 1000); // Diperlukan, hasilkan string timestamp tanda tangan noncestr = uuid.randomuuid (). ToString (); // Diperlukan, Hasilkan string acak tanda tangan // Di sini kami kueri di cache terlebih dahulu, dan waktu yang valid dari access-token perlu diatur dalam call antarmace query cache // redistemplate.opsforvalue (). Getoperations (). Hapus (awalan); // accessToken = (string) redistemplate.opsforvalue (). get (awalan); 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 ("tiket"); redistemplate.opsforvalue (). Set (prefixticket, jsapiticket); redistemplate.Expire (prefixticket, integer.parseint (wxconfigure.getExpiretime ()), timeunit.seconds); }}} String Signature = ""; // Perhatikan bahwa nama parameter di sini harus semuanya huruf kecil dan harus dipesan string Sign = "jsapi_ticket =" + jsapiticket + "& noncestr =" + noncestr + "× tamp =" + timestamp + "& url =" + requestUrl; Coba {MessageDigest crypt = MessageSpetedigest.getInstance ("sha-1"); crypt.reset (); crypt.update (Sign.getBytes ("UTF-8")); tanda tangan = bytetohex (crypt.gigest ()); } catch (nosuchalgorithMexception e) {e.printstacktrace (); } catch (UnsupportedEncodingException e) {e.printstacktrace (); } ret.put ("appid", appID); ret.put ("timestamp", cap waktu); ret.put ("noncestr", noncestr); ret.put ("tanda tangan", tanda tangan); Return Ret; }/** * Metode Nama: bytetohex </br> * Deskripsi terperinci: Metode tambahan string </br> * pengembang: gy </br> * @param hash * @return Penjelasan dari Nilai Pengembalian * @Throws Penjelasan dari kondisi untuk pengecualian ini */private static string bytetohex (final byte [] hasthy {format format) {format format {format format {format format {format format untuk (byte b: hash) {formatter.format ("%02x", b); } Hasil string = formatter.toString (); formatter.close (); hasil pengembalian; } / ** * Dapatkan AccessToken dari Redis, tentukan nilai string dari kunci, waktu kedaluwarsa 7200s * * @param key * @return * / token publik getAccessTokenFromredis () {token token = null; String asstoken = (string) redistemplate.opsforvalue (). Get (wxconfigure.getTokenKey ()); if (null! = asesToken &&! "". Equals (asesToken)) {token = new token (); token.setAccessToken (dinilai); Token kembali; } 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); Token kembali; }}4. Pengenalan JS yang berhubungan dengan halaman
<type script = "Text/JavaScript" src = "http://res.wx.qq.com/open/js/jweixin-1.0.0.js"> </cript> <script type = "text/javascript" src = "https://res.wx.qqq.com/price/script/script/» type = "text/javascript"> // informasi weChat dan konfigurasi panggilan // informasi weChat dan konfigurasi panggilan 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; waspada (tanda tangan); wx.config ({debug: false, appid: appid, timestamp: timestamp, noncestr: noncestr, tanda tangan: tanda tangan, jsapilis: ['onMenusharetimeline', 'onMenushareAppMessage', 'onMenushareQQ', 'OnMenushareAppMessage', 'onMenushareqq', 'OnMenushareReE', 'onMenushareqq', 'OnMenushareReE', 'OnMenushareqq', 'OnMenushareAppMessage', 'OnMenushareqq', 'OnMenusharePMessage', wx.ready (function () {var isok = true; wx.checkjsapi ({jsapilist: ['onMenusharetimeline'], fail: function (res) {alert ("versi weChat terlalu rendah, dan fungsi yang dibagikan dengan teman tidak didukung!"); isok = false;}} function (function (function) {"qual." Get the click status of the "Share to Moments" button and customize the sharing content interface wx.onMenuShareTimeline({ title: 'Part 6: How to customize the WeChat public account menu for practical Java version of WeChat public platform development', desc: 'Part 6: How to customize the WeChat public account menu for practical Java version of WeChat public platform development', link: 'http://4d536256.ngrok.io/login', imgurl: 'http://busc.4ggogo.com/media/media/img/home-show-a.png', Success: function (res) {Json. $ .AJAX ({type: "get", url: 'InsertCollectShare', data: {userid: userid,}, datatype: "json", async: false, success: function (data) {alert (200);}, kesalahan: data) {var rurl = xhr.getResponsehead ('contestehead (' contestead ('windOch') {var rurl = xhr.getResponsehead ('contestead (' contentpath '(' windOcy ('windOcing. }); WX.onMenushareAppMessage ({title: 'Bagian 7: Cara Mendapatkan Informasi Dasar Pengguna WeChat Dalam Pengembangan Platform Publik WeChat', // Bagikan Judul Desc: "Bagian 7: Cara Mendapatkan Informasi Dasar Pengguna WeChat dalam Pengembangan Platform Publik WeChat ', // Bagikan Tautan:' http: //4d536.ngin. 'http://busc.4ggogo.com/media/media/img/home-show-a.png', // Berbagi tipe ikon: 'tautan', // jenis berbagi, musik, video atau tautan, default adalah tautan}); account menu for practical Java version of WeChat public platform development', // Sharing title desc: 'Part 6: How to customize the WeChat public account menu for practical Java version of WeChat public platform development', // Sharing description link: 'http://4d536256.ngrok.io/login', // Sharing link imgUrl: 'http://busc.4ggogo.com/media/media/img/home-show-a.png', // Bagikan ikon sukses: fungsi () {// fungsi panggilan balik yang dieksekusi setelah pengguna mengkonfirmasi berbagi}, function () {// Fungsi callback yang dieksekusi setelah pembersihan pengguna berbagi}}); antarmuka wx.onmenushareweibo ({title: 'Bagikan ke judul tencent weibo', // Bagikan judul desc: 'Bagikan ke Tencent Weibo Deskripsi', // Bagikan Deskripsi Tautan: 'http://4d536256.ngrok.io/login',//Bagikan tautan Imgurl: 'http://busc.4ggogo.com/media/media/img/home-show-a.png', // Bagikan ikon sukses: fungsi () {// fungsi panggilan balik yang dieksekusi setelah pengguna mengkonfirmasi berbagi}, function () {// Fungsi callback yang dieksekusi setelah pengguna membatalkan berbagi}}); wx.onmenushareqzone ({judul: 'Bagikan ke QQ Space Title 1111111111111111', // Bagikan Judul Desc: 'Bagikan ke QQ Space Description 22222222222222222222222222222222222222222222222222222222222222222222222222222 22222222222222222222222222222222222222222222222222222222222222222222222222222 22222222222222222222222222222222222222222222222222222222222222222222222222222 22222222222222222222222222222222222222222222222222222222222222222222222222222 'http://4d536256.ngrok.io/login', imgurl: 'http: //busc.4ggogo.com/media/media/img/home-show-a.png', // berbagi ikon keberhasilan: function () {// fungsi panggilan balik yang dieksekusi {function {function {function {function {function () setelah pengguna membatalkan berbagi}});CATATAN: Jalur yang ditransfer adalah jalur nama domain yang dikonfigurasi, jika tidak tidak dapat dipanggil, dan ukuran gambar tidak bisa lebih besar dari 300K
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.