關於java微信access token失效的處理

2021-07-05 03:59:24 字數 1077 閱讀 7374

access_token的有效期是7200秒(兩小時),在有效期內,可以一直使用,只有當access_token過期時,才需要再次呼叫介面獲取access_token。在理想情況下,乙個7x24小時執行的系統,每天只需要獲取12次access_token,即每2小時獲取一次。如果在有效期內,再次獲取access_token,那麼上一次獲取的access_token將失效。

目前,獲取access_token介面的呼叫頻率限制為2000次/天,如果每次傳送客服訊息、獲取使用者資訊、**訊息之前都要先呼叫獲取access_token介面得到介面訪問憑證,這顯然是不合理的,一方面會更耗時(多了一次介面呼叫操作),另一方面2000次/天的呼叫限制恐怕也不夠用。因此,在實際應用中,我們需要將獲取到的access_token儲存起來,然後定期呼叫access_token介面更新它,以保證隨時取出的access_token都是有效的。

在動手前先來簡單分析一下,我們要解決的無非是如下兩個問題:

1.如何定時獲取access_token?

2.將access_token儲存在哪?

對於access_token的儲存,可以考慮儲存在檔案、資料庫或記憶體中。具體採用哪種儲存方式,需要根據專案實際情況而定。如果只有一台伺服器,直接將access_token儲存在記憶體中是最簡便有效的方式。

在工程中建立乙個initservlet類,該類的**如下:

initservlet在web.xml中的配置如下:

tokenthread的源**如下:

**中的第23行通過while(true){}構造了乙個死迴圈(永久執行);第25行呼叫公眾平台介面獲取access_token;第29行讓執行緒休眠7000秒再執行,即每隔7000秒獲取一次access_token,保證access_token永不失效。在專案中的其他類,可以通過呼叫 tokenthread.accesstoken.gettoken() 來得到介面訪問憑證access_token。在本地部署執行該程式,tomcat啟動完成後就會在控制台顯示如下日誌:

為了能夠直**到定期獲取access_token的效果,可以試著將tokenthread裡的執行緒休眠時間修改為30秒或60秒。

php獲取微信基礎介面憑證Access token

access token是 的全域性唯一票據,呼叫各界麵時都需使用a開發者需要進行妥善儲存。access token的有效期目前為2個小時,需定時重新整理,重複獲tqgwnwrgw取將導致上次獲取的access token失效。使用appid和appsecret呼叫本介面來獲取access toke...

關於微信營銷

我知道我的廣告費有一半是浪費的,問題是我不知道浪費掉的是哪一半。還記得美國著名商人約翰 華納梅克的這句感慨嗎?不過所有的一切,都取決於乙個前提 讓顧客加你為好友。如何讓客戶加你?如果你是 中國好聲音 那不用發愁,很多人會主動來查詢你 如果你還沒到這個程度,怎麼辦?活動歷時一整天,共增加粉絲500人,...

微信退款開發 Java

原文 二 編寫 處理退款請求 初始化退款介面需要的資料,隱藏了get和set方法。public class refundreqdatamobimessage實現json資料型別和xml資料之間的轉換。public class mobimessage inputstream.close return ...