微信公眾號(hào)獲取access_token的方法實(shí)例分析
本文實(shí)例講述了微信公眾號(hào)獲取access_token的方法。分享給大家供大家參考,具體如下:
上一版需求做了微信公眾號(hào)開發(fā),秀了一波操作,也遇到了很多坑?,F(xiàn)在把微信公眾號(hào)一些基本的操作記錄一下。
微信公眾號(hào)獲取access_token 官方文檔地址
access_token是公眾號(hào)的全局唯一接口調(diào)用憑據(jù),我們和微信服務(wù)器進(jìn)行交互,服務(wù)器通過access_token判斷我們是誰(哪個(gè)公眾號(hào)服務(wù)的請(qǐng)求)。所以 我們?cè)陂_發(fā)過程中服務(wù)端拿到的access_token是一定不能顯式暴露給外部,否則將導(dǎo)致數(shù)據(jù)安全問題。別人拿到你的accessToken操作你的公眾號(hào)。access_token的有效期目前為2個(gè)小時(shí),過期需要再次獲取。
下面是一種獲取access_token方式
1.項(xiàng)目添加httpclient相關(guān)依賴,示例使用httpclient請(qǐng)求微信服務(wù)器,獲取微信返回結(jié)果。
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.6</version> </dependency>
2.httpClientUtil類,網(wǎng)上隨手找的 試了一下本例的doget方法 沒有問題,其他的 暫不考慮
public class HttpClientUtil { public static String doGet(String url, Map<String, String> param) { // 創(chuàng)建Httpclient對(duì)象 CloseableHttpClient httpclient = HttpClients.createDefault(); String resultString = ""; CloseableHttpResponse response = null; try { // 創(chuàng)建uri URIBuilder builder = new URIBuilder(url); if (param != null) { for (String key : param.keySet()) { builder.addParameter(key, param.get(key)); } } URI uri = builder.build(); // 創(chuàng)建http GET請(qǐng)求 HttpGet httpGet = new HttpGet(uri); // 執(zhí)行請(qǐng)求 response = httpclient.execute(httpGet); // 判斷返回狀態(tài)是否為200 if (response.getStatusLine().getStatusCode() == 200) { resultString = EntityUtils.toString(response.getEntity(), "UTF-8"); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (response != null) { response.close(); } httpclient.close(); } catch (IOException e) { e.printStackTrace(); } } return resultString; } public static String doGet(String url) { return doGet(url, null); } public static String doPost(String url, Map<String, String> param) { // 創(chuàng)建Httpclient對(duì)象 CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null; String resultString = ""; try { // 創(chuàng)建Http Post請(qǐng)求 HttpPost httpPost = new HttpPost(url); // 創(chuàng)建參數(shù)列表 if (param != null) { List<NameValuePair> paramList = new ArrayList<>(); for (String key : param.keySet()) { paramList.add(new BasicNameValuePair(key, param.get(key))); } // 模擬表單 UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList,"utf-8"); httpPost.setEntity(entity); } // 執(zhí)行http請(qǐng)求 response = httpClient.execute(httpPost); resultString = EntityUtils.toString(response.getEntity(), "utf-8"); } catch (Exception e) { e.printStackTrace(); } finally { try { response.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return resultString; } public static String doPost(String url) { return doPost(url, null); } public static String doPostJson(String url, String json) { // 創(chuàng)建Httpclient對(duì)象 CloseableHttpClient httpClient = HttpClients.createDefault(); CloseableHttpResponse response = null; String resultString = ""; try { // 創(chuàng)建Http Post請(qǐng)求 HttpPost httpPost = new HttpPost(url); // 創(chuàng)建請(qǐng)求內(nèi)容 StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON); httpPost.setEntity(entity); // 執(zhí)行http請(qǐng)求 response = httpClient.execute(httpPost); resultString = EntityUtils.toString(response.getEntity(), "utf-8"); } catch (Exception e) { e.printStackTrace(); } finally { try { response.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return resultString; } }
3.第三步就是簡單的測(cè)試代碼了
public class WeChatAccessTokenTest { public static void main(String[] args) { Map<String, String> params = new HashMap<>(); // TODO: 2018/11/16 *號(hào)改成真實(shí)appid params.put("appid", "******"); // TODO: 2018/11/16 *號(hào)改成真實(shí)secret params.put("secret", "******"); params.put("grant_type", "client_credential"); String response = HttpClientUtil.doGet("https://api.weixin.qq.com/cgi-bin/token", params); JSONObject accessTokenObject = JSONObject.parseObject(response); String accessToken = accessTokenObject.getString("access_token"); Long expire = accessTokenObject.getLong("expires_in"); System.out.println(accessToken); } }
以上就是微信公眾號(hào)基礎(chǔ)卻比較重要的獲取access_token操作了!
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java字符與字符串操作技巧總結(jié)》、《Java數(shù)組操作技巧總結(jié)》、《Java數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Java編碼操作技巧總結(jié)》和《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
- java獲取微信accessToken的方法
- 微信公眾號(hào)平臺(tái)接口開發(fā) 獲取access_token過程解析
- 微信公眾平臺(tái)獲取access_token的方法步驟
- 詳解微信開發(fā)之a(chǎn)ccess_token之坑
- php獲取微信基礎(chǔ)接口憑證Access_token
- 微信小程序登錄換取token的教程
- 微信小程序url與token設(shè)置詳解
- Java微信公眾平臺(tái)開發(fā)(6) 微信開發(fā)中的token獲取
- 基于thinkPHP3.2實(shí)現(xiàn)微信接入及查詢token值的方法
- 微信公眾號(hào)服務(wù)器驗(yàn)證Token步驟圖解
相關(guān)文章
Java 8新的時(shí)間日期庫的20個(gè)使用示例
這篇文章主要介紹了Java 8新的時(shí)間日期庫的20個(gè)使用示例,需要的朋友可以參考下2015-04-04SpringCloud?LoadBalancerClient?負(fù)載均衡原理解析
LoadBalancerClient?是?SpringCloud?提供的一種負(fù)載均衡客戶端,Ribbon?負(fù)載均衡組件內(nèi)部也是集成了?LoadBalancerClient?來實(shí)現(xiàn)負(fù)載均衡,本文給大家深入解析?LoadBalancerClient?接口源碼,感興趣的朋友跟隨小編一起看看吧2022-02-02全面了解OAuth?2.0四種授權(quán)方式金三銀四無懼面試
這篇文章主要介紹了全面了解OAuth?2.0四種授權(quán)方式金三銀四無懼面試,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02hibernate-validator后端表單數(shù)據(jù)校驗(yàn)的使用示例詳解
這篇文章主要介紹了hibernate-validator后端表單數(shù)據(jù)校驗(yàn)的使用,hibernate-validator提供的校驗(yàn)方式為在類的屬性上加入相應(yīng)的注解來達(dá)到校驗(yàn)的目的,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08JAVA通過Filter實(shí)現(xiàn)允許服務(wù)跨域請(qǐng)求的方法
這里的域指的是這樣的一個(gè)概念:我們認(rèn)為若協(xié)議 + 域名 + 端口號(hào)均相同,那么就是同域即我們常說的瀏覽器請(qǐng)求的同源策略。這篇文章主要介紹了JAVA通過Filter實(shí)現(xiàn)允許服務(wù)跨域請(qǐng)求,需要的朋友可以參考下2018-11-11一不小心就讓Java開發(fā)踩坑的fail-fast是個(gè)什么鬼?(推薦)
這篇文章主要介紹了Java fail-fast,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04