微信公眾號開發-開發環境搭建並通過java程式碼獲取微信access_token
微信開發文件:http://mp.weixin.qq.com/wiki
進入開發文件:
獲取access token
access_token是公眾號的全域性唯一票據,公眾號呼叫各介面時都需使用access_token。開發者需要進行妥善儲存。access_token的儲存至少要保留512個字元空間。access_token的有效期目前為2個小時,需定時重新整理,重複獲取將導致上次獲取的access_token失效。
公眾平臺的API呼叫所需的access_token的使用及生成方式說明:
1、為了保密appsecrect,第三方需要一個access_token獲取和重新整理的中控伺服器。而其他業務邏輯伺服器所使用的access_token均來自於該中控伺服器,不應該各自去重新整理,否則會造成access_token覆蓋而影響業務;
2、目前access_token的有效期通過返回的expire_in來傳達,目前是7200秒之內的值。中控伺服器需要根據這個有效時間提前去重新整理新access_token。在重新整理過程中,中控伺服器對外輸出的依然是老access_token,此時公眾平臺後臺會保證在重新整理短時間內,新老access_token都可用,這保證了第三方業務的平滑過渡;
3、access_token的有效時間可能會在未來有調整,所以中控伺服器不僅需要內部定時主動重新整理,還需要提供被動重新整理access_token的介面,這樣便於業務伺服器在API呼叫獲知access_token已超時的情況下,可以觸發access_token的重新整理流程。
介面呼叫請求說明
http請求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
引數說明
引數 |
是否必須 |
說明 |
grant_type |
是 |
獲取access_token填寫client_credential |
appid |
是 |
第三方使用者唯一憑證 |
secret |
是 |
第三方使用者唯一憑證金鑰,即appsecret |
返回說明
正常情況下,微信會返回下述JSON資料包給公眾號:
{"access_token":"ACCESS_TOKEN","expires_in":7200}
引數 |
說明 |
access_token |
獲取到的憑證 |
expires_in |
憑證有效時間,單位:秒 |
錯誤時微信會返回錯誤碼等資訊,JSON資料包示例如下(該示例為AppID無效錯誤):
{"errcode":40013,"errmsg":"invalidappid"}
進入微信後臺管理,點選開發者工具
因為正是賬號正在申請中,所有一個提供測試的公共賬號,微信開發平臺為我們提供了一個專用的測試賬號。在測試賬號中可以獲得一個appID和appsecret
我們在瀏覽器中替換兩個引數進行一個測試,看到可以正常返回獲取到一個token和token的有效時間。
啟動eclipse,新建一個java工程,因為要模擬http訪問,需要下載httpclient元件,下載地址http://hc.apache.org/downloads.cgi
最好使用穩定版本HttpClient 4.5.3 (GA)
讀取token的程式碼如下:
import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.http.client.CookieStore; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.impl.client.BasicCookieStore; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; public class ClientCustomContext { public final static void main(String[] args) throws Exception { CloseableHttpClient httpclient = HttpClients.createDefault(); try { CookieStore cookieStore = new BasicCookieStore(); HttpClientContext localContext = HttpClientContext.create(); localContext.setCookieStore(cookieStore); HttpGet httpget = new HttpGet( "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=xxx&secret=xxx"); System.out.println("Executing request " + httpget.getRequestLine()); CloseableHttpResponse response = httpclient.execute(httpget, localContext); try { System.out.println("----------------------------------------"); System.out.println(response.getStatusLine()); InputStream is = response.getEntity().getContent(); BufferedReader br = new BufferedReader( new InputStreamReader(is)); String str = ""; while ((str = br.readLine()) != null) { System.out.println(str); } } finally { response.close(); } } finally { httpclient.close(); } } }
我們需要根據返回的內容中的expires_in結果,寫一個定時任務,並把返回的token寫入一個全域性變數中,定時任務定時從微信獲取最新的token。程式需要token是直接從全域性變數中讀取。
相關文章
- 微信開發系列之一 - 微信公眾號開發的開發環境搭建開發環境
- php 獲取微信公眾號access_tokenPHP
- 微信公眾號開發
- TNW-獲取微信公眾號的 access_tokenTNW
- 【Java】微信公眾號開發筆記Java筆記
- 微信公眾號開發-分享
- Nodejs微信公眾號開發NodeJS
- .net開發微信公眾號
- 微信公眾號開發系統入門教程(公眾號註冊、開發環境搭建、access_token管理、Demo實現、natapp外網穿透)開發環境APP穿透
- 微信公眾號支付開發全過程(Java 版)Java
- 在 Ubuntu 18.04 上 搭建微信小程式和公眾號應用開發環境Ubuntu微信小程式開發環境
- 微信公眾號讚賞功能開通方法 微信公眾號讚賞如何開通
- 微信公眾號獲取AccessToekn
- Java微信公眾號開發之使用攔截器獲取粉絲openIDJava
- 微信公眾號Java開發記錄(一)接入Java
- 微信程式開發系列教程(一)開發環境搭建開發環境
- 微信公眾號開發5-自定義選單-微信開發phpPHP
- java微信小程式獲取ACCESS_TOKENJava微信小程式
- 微信公眾號開發之坑(一)
- Python+Tornado開發微信公眾號Python
- PHP微信公眾號開發——公共方法PHP
- Laravel+easywechat 開發微信公眾號Laravel
- 微信公眾號開發 —— 微信網頁授權小記網頁
- 微信公眾號測試號開發小結
- Spring Boot 開發微信公眾號後臺Spring Boot
- 微信公眾號開發之客服訊息
- 微信公眾號開發推送事件排重事件
- 微信公眾號支付開發手記(node)
- 記一次微信公眾號開發
- 微信公眾號開發Django JSSDK授權DjangoJS
- 微信公眾號開發(一)基礎配置
- 【微信部落】tp5+ionic開發微信公眾號商城系統
- 微信小程式開發系列(一) :開發環境搭建和微信小程式的檢視設計與開發微信小程式開發環境
- 微信公眾號開發-後端demo(隨錄)後端
- NodeJS介紹以及開發微信公眾號ExampleNodeJS
- Nodejs開發微信公眾號中控服務NodeJS
- Python開發微信公眾號後臺(系列二)Python
- 微信公眾號開發Django 網頁授權Django網頁
- 微信公眾號開發教程(一) 驗證接入