小程序、微信開(kāi)發(fā)關(guān)于accesstoken的問(wèn)題

關(guān)于小程序開(kāi)發(fā)支付腹侣,或者消息推送叔收,或者微信支付 都需要accesstoken。微信官方文檔如下

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183

?有些開(kāi)發(fā)同學(xué)每次都是現(xiàn)調(diào)用接口傲隶,根本不緩存accesstoken饺律,這種首先可能會(huì)達(dá)到限制次數(shù)的問(wèn)題,其次可能會(huì)存在一部分訪問(wèn)沒(méi)有處理完跺株,另外一個(gè)訪問(wèn)又重新獲取accesstoken复濒,從而導(dǎo)致別人的accesstoken過(guò)期了的問(wèn)題。

accesstoken 默認(rèn)是有每天2000次的調(diào)用限制帖鸦,有些同學(xué)覺(jué)得芝薇,這個(gè)怎么能夠用啊作儿?可是accesstoken還有個(gè)屬性就是有7200秒的有效期洛二,也就是兩個(gè)小時(shí),理論上一天最多消耗12次調(diào)用攻锰,沒(méi)有過(guò)期就調(diào)用緩存里面的晾嘶,所以是完全夠用的。

下面以java代碼為例實(shí)現(xiàn)這個(gè)過(guò)程娶吞。

@Controller

@RequestMapping("wx")

public class WxController {

private Loggerlog = LoggerFactory.getLogger(UserController.class);

private static AccessToken? ?myAccessToken;

@Value("${wxapp.appid}")

private String appId;

@Value("${wxapp.secret}")

private String secret;

@ResponseBody

@RequestMapping("accesstoken")

public String getAccessToken(){

try {

if (myAccessToken !=null && StringUtil.isNotEmpty(myAccessToken.getAccessToken()) && ((new Date().getTime() -myAccessToken.getDate().getTime()) /1000) <=7000) {//這里為了保險(xiǎn)設(shè)置成7000秒過(guò)期垒迂,而不是7200秒

//沒(méi)有過(guò)期

? ? ? ? ? ? return myAccessToken.getAccessToken();

}else {

//已經(jīng)過(guò)期,則重新申請(qǐng)

? ? ? ? ? ? String url ="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" +appId +"&secret=" +secret;

String json = MsgHttpRequest.get(url);

JSONObject jsonObject = JSONObject.parseObject(json);

if (jsonObject.containsKey("access_token")) {

AccessToken accessToken =new AccessToken();

accessToken.setAccessToken(jsonObject.get("access_token").toString());

accessToken.setDate(new Date());

myAccessToken = accessToken;

return myAccessToken.getAccessToken();

}else {

log.error("獲取getAccessToken異常:" + json);

}

}

}catch (Exception ex) {

log.error("getAccessToken錯(cuò)誤:");

ex.printStackTrace();

}

return "";

}

}

還有一個(gè)實(shí)體類(lèi)

public class AccessToken {

public String getAccessToken() {

return accessToken;

}

public void setAccessToken(String accessToken) {

this.accessToken = accessToken;

}

public Date getDate() {

return date;

}

public void setDate(Date date) {

this.date = date;

}

private StringaccessToken;

private Datedate;

}

其實(shí)比較簡(jiǎn)單妒蛇,使用一個(gè)靜態(tài)變量來(lái)當(dāng)作緩存保存獲取的accesstoken机断, 每次獲取的時(shí)候比較一下是否過(guò)期了,過(guò)期了就重新獲取绣夺,否則就用緩存里面的吏奸。當(dāng)然你也可以把a(bǔ)ccesstoken放到redis中,設(shè)置好過(guò)期時(shí)間就可以了陶耍。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末奋蔚,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌泊碑,老刑警劉巖坤按,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異馒过,居然都是意外死亡臭脓,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)沉桌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)谢鹊,“玉大人,你說(shuō)我怎么就攤上這事留凭〉瓒螅” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵蔼夜,是天一觀的道長(zhǎng)兼耀。 經(jīng)常有香客問(wèn)我,道長(zhǎng)求冷,這世上最難降的妖魔是什么瘤运? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮匠题,結(jié)果婚禮上拯坟,老公的妹妹穿的比我還像新娘。我一直安慰自己韭山,他們只是感情好郁季,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著钱磅,像睡著了一般梦裂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上盖淡,一...
    開(kāi)封第一講書(shū)人閱讀 49,784評(píng)論 1 290
  • 那天年柠,我揣著相機(jī)與錄音,去河邊找鬼褪迟。 笑死冗恨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的味赃。 我是一名探鬼主播派近,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼洁桌!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起侯嘀,我...
    開(kāi)封第一講書(shū)人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤另凌,失蹤者是張志新(化名)和其女友劉穎谱轨,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體吠谢,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡土童,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了工坊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片献汗。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖王污,靈堂內(nèi)的尸體忽然破棺而出罢吃,到底是詐尸還是另有隱情,我是刑警寧澤昭齐,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布尿招,位于F島的核電站,受9級(jí)特大地震影響阱驾,放射性物質(zhì)發(fā)生泄漏就谜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一里覆、第九天 我趴在偏房一處隱蔽的房頂上張望丧荐。 院中可真熱鬧,春花似錦喧枷、人聲如沸虹统。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)窟却。三九已至,卻和暖如春呻逆,著一層夾襖步出監(jiān)牢的瞬間夸赫,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工咖城, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留茬腿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓宜雀,卻偏偏與公主長(zhǎng)得像切平,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子辐董,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348