بعض الخطوات الصغيرة في تطوير واجهة مشاركة WeChat ، المحتوى المحدد هو كما يلي
1. تكوين معلومات الواجهة للتحقق
الرمز كما يلي:
/** * القفز للوصول إلى العنوان غير المصحول * * * @param طلب * return صفحة تسجيل الدخول * @throws استثناء */ @requestmapping (value = "/checkwxdomainurl" ، method = requestMethod.get) عنوان عنوان عنوان الخادم المملوء ، ويحمل طلب GET توقيع سلسلة المعلمة = request.getParameter ("التوقيع") ؛ // توقيع تشفير WeChat (الرمز المميز ، الطابع الزمني ، nonce.) request.getParameter ("echosttr") ؛ // string random // فرز رمز القاموس ، timestamp ، سلسلة nonce [] params = new string [] {token ، timestamp ، nonce} ؛ المصفوفات. // لصق سلاسل المعلمة ثلاثة في سلسلة لسلسلة تشفير sha1 cleartext = params [0] + params [1] + params [2] ؛ خوارزمية السلسلة = "sha-1" ؛ علامة سلسلة = سلسلة جديدة (Hex.encodeHex (messagedigest.getInstance (خوارزمية) .Digest ((cleartext) .getBytes ()) ، true))) ؛ // يحصل المؤلف على السلسلة المشفرة بالتوقيع ، مع تحديد أن الطلب يأتي من WeChat if (signature.equals (sign)) {response.getWriter (). print (echoStr) ؛ }} catch (استثناء e) {E.PrintStackTrace () ؛ }}2. js التكوين
3. احصل على معلمات JS في صفحة المشاركة ، واحصل على رمز وتذكرة لإضافته إلى ذاكرة التخزين المؤقت
/** * اسم الطريقة: getWxConfig </br> * الوصف التفصيلي: الحصول على معلومات تكوين WeChat </br> * المطور: gy * param request * regurn اشرح معنى قيمة الإرجاع * athrows شرح الشرط لهذا الاستثناء */Override public map <String> getWxConfig (httpletrequest) كائن> () ؛ String appid = wxConfigure.getAppId () ؛ // مطلوب ، المعرف الفريد لسلسلة الحساب الرسمية requesturl = request.getRequesturl (). toString () ؛ سلسلة AccessToken = null ؛ سلسلة jsapiticket = فارغة ؛ url url = "" ؛ Tring timestamp = long.toString (System.CurrentTimeMillis () / 1000) ؛ // مطلوب ، قم بإنشاء سلسلة timestamp التوقيع noncestr = uuid.randomuuid (). toString () ؛ // مطلوب ، قم بإنشاء سلسلة عشوائية توقيع // هنا نستفسر في ذاكرة التخزين المؤقت أولاً ، ويجب تعيين الوقت الصحيح للوصول إلى ذاكرة التخزين المؤقت للاستفادة من واجهة الاتصال // redistemplate.opsforvalue (). // AccessToken = (string) redistemplate.opsforvalue (). get (prefix) ؛ Token AccessTokenFromredis = getAccessTokenFromredis () ؛ AccessToken = AccessTokenFromredis.getAccessToken () ؛ if (AccessTokenFromredis.getAccessToken ()! = null) {jsapiticket = (string) redistemplate.opsforvalue (). get (profixTicket) ؛ 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 (precticket ، jsapiticket) ؛ redistemplate.expire (precticket ، integer.parseint (wxConfigure.getExpiretime ()) ، timeUnit.Seconds) ؛ }}} سلسلة التوقيع = "" ؛ // لاحظ أن أسماء المعلمات هنا يجب أن تكون جميعها صغيرة ويجب طلبها sign sign = "jsapi_ticket =" + jsapiticket + "& noncestr =" + noncestr + "× tamp =" + timestamp + "& url =" + requesturl ؛ حاول {messagedigest crypt = messagedigest.getInstance ("sha-1") ؛ crypt.Reset () ؛ crypt.update (sign.getBytes ("utf-8")) ؛ التوقيع = bytetoHex (crypt.digest ()) ؛ } catch (nosuchalgorithMexception e) {e.printstacktrace () ؛ } catch (UnsupportedEncodingException e) {E.PrintStackTrace () ؛ } ret.put ("appid" ، appid) ؛ ret.put ("Timestamp" ، timestamp) ؛ ret.put ("noncester" ، noncester) ؛ ret.put ("التوقيع" ، التوقيع) ؛ العودة ret. }/** * اسم الطريقة: BYTETOHEX </br> * الوصف التفصيلي: طريقة تشفير السلسلة طريقة المساعدة </br> * المطور: gy </br> * param hash * @return explanation لمعنى قيمة الإرجاع * thorthrows شرح هذا الاستثناء */private static string bytetohex (BAY BAY لـ (byte b: hash) {formatter.format ("٪ 02x" ، b) ؛ } string result = formatter.toString () ؛ formatter.close () ؛ نتيجة العودة } / ** * احصل على AccessToken من redis ، حدد قيمة السلسلة للمفتاح ، وقت انتهاء الصلاحية 7200S * * @param Key * @return * / public tokencesstokenfrokenfis () {token token = null ؛ string aluadingtoken = (string) redistemplate.opsforvalue (). get (wxConfigure.getTokenKey ()) ؛ if (null! = evalitytoken &&! " token.setAccessToken (assaltoken) ؛ الرمز الرمز المميز. } آخر {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"> </script> <script type = "text/javaScript" src = "https://res.wx.qq.com/open/js/jweixin-1.0.0.js"> </script> <script type = "text/javaScript"> // wechat information و configuration // wechat information and configuration configuration var $ = $ ( 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: noncestr ، signature: jsapilist: ['onmenusharetimeline' ، 'onMenushareAppMessage' ، 'onmenushareqqq' ، 'onmenushareibo. wx.ready (function () {var isok = true ؛ wx.checkjsapi ({jsapilist: ['onMenushAretimeline'] ، fail: function (res) {enalert ("إصدار weChat منخفض للغاية ، والوظيفة المشتركة مع الأصدقاء غير مدعومة!") // احصل على حالة النقر لزر "مشاركة لحظات" وتخصيص واجهة محتوى المشاركة wx.onmenusharetimeline ({title: 'الجزء 6: كيفية تخصيص قائمة حساب WeChat العامة لإصدار Java العملي من Wechat Platform Development "، Desc:" الجزء 6: كيفية تخصيص قائمة Wechat Public Account Associat "http://4d536256.ngrok.io/login '، imgurl:' http://busc.4ggogo.com/media/media/img/home-show-a.png '، النجاح (الدالة) $ .ajax ({type: "get" ، url: 'insertCollectShare' ، data: {userId: userId ،} ، datatype: "json" ، async: false ، success: function (data) }) ؛ WX.OnmenShareAppMessage ({العنوان: "الجزء 7: كيفية الحصول على المعلومات الأساسية لمستخدمي WeChat في تطوير منصة WeChat العامة" ، // مشاركة العنوان DESC: "الجزء 7: كيفية الحصول على معلومات أساسية لمستخدمي WeChat في تطوير منصة WeChat العامة" ، // مشاركة الوصف الرابط: "http: //4d536256.ngroko "http://busc.4ggogo.com/media/media/img/home-show-a.png ، قائمة الحساب للحصول على إصدار Java العملي من WeChat Public Platform Development '، // مشاركة العنوان DESC:' الجزء 6: كيفية تخصيص قائمة حساب WeChat العامة لإصدار Java العملي من Wechat Public Platform Development "، // مشاركة الوصف الرابط:" http://4d536256.ngrok.io/login ' "http://busc.4ggogo.com/media/media/img/home-show-a.png ، واجهة wx.onmenushareweibo ({title: "مشاركة إلى Tencent Weibo Title '، // مشاركة العنوان DESC:" مشاركة إلى Tencent Weibo Description' ، // مشاركة الوصف الرابط: 'http://4d536256.ngrok.io/login' ، // مشاركة الرابط Imgurl: "http://busc.4ggogo.com/media/media/img/home-show-a.png ، WX.OnmenShareQZone ({title: "مشاركة إلى QQ Space Title 1111111111111111 '، 222222222222222222222222222222222222222222222222222222222222222222222222222222 222222222222222222222222222222222222222222222222222222222222222222222222222222 222222222222222222222222222222222222222222222222222222222222222222222222222222 222222222222222222222222222222222222222222222222222222222222222222222222222222 'http://4d536256.ngrok.io/login' ، imgurl: 'http: //busc.4ggogo.com/media/media/img/home-show-a.png' ، بعد أن يلغي المستخدم المشاركة}) ؛ملاحظة: المسار المنقول هو مسار اسم المجال المكون ، وإلا لا يمكن استدعاؤه ، ولا يمكن أن يكون حجم الصورة أكبر من 300 ألف
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.