access_token是與微信伺服器互動過程中的憑證,每次客戶伺服器主動與微信伺服器通訊都需要帶上access_token以確認自己的身分。 wechat4j內部封裝了access_token的操作,包括取得access_token和access_token中控伺服器的實作。
access_token取得
要取得access_token可以使用以下的方法
String accessToken = TokenProxy.accessToken();
缺點:無法支援多伺服器的集群,如果多個伺服器的時候,此方式將不被支援。
設定自訂access_token伺服器的詳細步驟:
建立自己的伺服器類,需要繼承wechat4j的CustomerServer類,實作save和find方法,前者是將access_token儲存到資料庫的操作,後者是從資料庫中查詢access_token的方法,裡面可以是一個sql操作之類的。
public class CustomerAccessTokenServer extends CustomerServer{/* (non-Javadoc) * @see org.sword.wechat4j.token.DbAccessTokenServer#find() */@Overridepublic String find() { String accessToken = null; //执行数据库操作// String sql = "select cfgValue from cfg where cfg.cfgKey = 'access_token'";// accessToken = DBUtil.query(sql); return accessToken; }/* (non-Javadoc) * @see org.sword.wechat4j.token.DbAccessTokenServer#save() */@Overridepublic boolean save(Token accessToken) { //如果没有需要插入,如果有的就更新,假设已经有了数据库配置项// String sql = "update cfg set cfg.cfgValue=" + accessToken.getToken() + // " where cfg.cfgKey= 'access_token'";// DBUtil.execute(sql); return true; } }在wechat4j.properties設定檔中設定wechat.accessToken.server.class項,搭配剛才新建的伺服器類別的路
wechat.accessToken.server.class=com.sample.wechat.CustomerAccessTokenServer在web.xml中設定wechat4j的access_token監聽器。程式碼如下:
<listener> <listener-class>org.sword.wechat4j.token.TokenListener</listener-class></listener>透過如上三步驟就能設定好自己的資料庫access_token伺服器。這樣由中控伺服器定時去刷新access_token,然後儲存到資料庫中,業務邏輯中要使用access_token的時候,是透過代理去資料庫拿到資料。
定時刷新任務會提前200秒運行,防止到有效期之後運行過程中新access_token沒有取得舊的access_token過期的情況發生。
更多java微信開發(wechat4j)-access_token中控伺服器實作相關文章請關注PHP中文網!