更新一波,微信第三方開發平臺受權流程

最近一直忙於微信三方開發平臺開發,更新一下,作個記錄,微信第三方開發平臺受權流程示例:javascript

先看受權流程要拿到的結果:html

微信第三方受權

照例先給出微信受權流程官網頁面:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1453779503&token=&lang=zh_CNjava

接下來是受權流程:jquery

文檔:數據庫

說明

受權的方式分爲兩種,分別爲:api

 

說明

此過程當中我這邊使用的是第一種方法。以上屬於文檔中給定的總的受權方法,接下來咱們去實現它:緩存

首先看第一步:獲取第三方平臺componment_access_token:微信

官方文檔:併發

獲取componmentAccessToken

實現:app

Postman運行示例:

postman

代碼示例:

 1 /**
 2      * 調取第三方平臺component_access_token(有效期兩個小時)的接口
 3      */
 4     public static Pubcache getNewComponentAccessToken(){
 5         Map<String, String> map = new HashMap<>();
 6         map.put("component_appid", WXconfig.COMPONENT_APPID);
 7         map.put("component_appsecret", WXconfig.COMPONENT_APPSECRET);
 8         map.put("component_verify_ticket", WxCacheUtil.getComponentVerifyTicket());
 9         DebugUtils.savaDebugInfo(null, "從緩存中取出的爲component_verify_ticket====================", WxCacheUtil.getComponentVerifyTicket());
10         String postData = JsonUtils.convert(map);
11         String url = "https://api.weixin.qq.com/cgi-bin/component/api_component_token";
12         String result = WxUtil.httpsRequest(url, "POST", postData);
13         Map<String, String> cat = CompenmentAuthorize.parseJSONMap(result);
14         //存緩存
15         Pubcache pubcache = new Pubcache();
16         pubcache.setKeyName("component_access_token");
17         pubcache.setKeyValue(cat.get("component_access_token"));
18         pubcache.setLastUpdate(new Date());
19         return pubcache;
20     }

說明:componmentVerifyTicket是微信第三方全網發佈以後每隔十分鐘推送的ticket,我在接收ticket的時候存入了數據庫中,因此此時的WxCacheUtil.getComponentVerifyTicket()方法是從數據庫中讀取的最新推送的一條數據;WXconfig.COMPONENT_APPID是三方商務平臺的appid,

WXconfig.COMPONENT_APPSECRET是三方商務平臺的appsecret;

運行結果返回和微信文檔中返回一致則正確,此時成功獲取到最新的componment_access_token;由於componment_access_token有效期兩個小時,建議緩存起來

或者存入數據庫,在考慮併發的狀況下建議寫個定時器在一分五十秒左右去定時刷新componment_access_token,避免componment_access_token失效或者被別處

方法調用而更新掉致使無效。

第二步:獲取預受權碼pre_auth_code:

官方文檔:

獲取預受權碼

postman運行示例:

postman示例

postman示例

參數說明:param裏面的componment_access_token就是上一步驟中獲取到的componment_access_token,而後post請求中的componment_appid就是三方商務平臺

的appid,而後運行postman,結果會返回預受權碼以及有效時間。

第三步:使用受權碼換取公衆號受權信息:

這個時候使用一個寫好的頁面:

 1 <html>
 2 <head>
 3 <meta charset="utf-8">
 4 
 5 <meta name="keywords" content="">
 6 <meta name="description" content="">
 7 <title></title>
 8 <script src="STYLE/JS/jquery-1.8.3.min.js" type="text/javascript" charset="utf-8"></script>
 9 <script type="text/javascript"> 
10     //獲取連接參數函數
11     function goToAuth(){
12         var url = "https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=12345678&pre_auth_code=xxxxxxx&redirect_uri=http%3A%2F%2Fxxx.com%2Fxxxx%2Fevent%2xxxxx.do&auth_type=1";
13         window.location.href = url;
14     };
15 </script> 
16 </head>
17 <body>
18     <div class="main"> 
19         <div class="ewm"> 
20             <input type="button" value="受權" onclick="goToAuth();">   
21         </div>
22     </div>
23 </body>
24 </html>

說明:把頁面js中的componment_appid換成本身這邊三方商務平臺的componment_appid,把pre_auth_code替換成剛纔獲取到的預受權碼,而後再把回跳地址替換一下,運行此頁面會生成一個受權二維碼頁面,當公衆號管理員掃描進行受權以後,回調url會返回受權碼authorization_code和過時時間。

第四步:獲取受權信息:

微信文檔:

獲取受權信息

postMan示例:

postman示例

 

postman示例

填入對應的參數,運行postman,獲取到受權信息保存便可。

相關文章
相關標籤/搜索