最近開發(fā)小程序,有一個功能是分享頁面,因為回來的頁面是要帶參數(shù)點,便決定使用生成小程序碼來解決這個功能,先看官方的說明文檔: 我使用的是第二種方式,目前這種方式生成小程序碼數(shù)量不受限制!
這個借口的一個參數(shù)是要用的 access_token 的,但是 access_token 是有有效期到,同樣官方文檔也建議我們:
1、建議公眾號開發(fā)者使用中控服務(wù)器統(tǒng)一獲取和刷新Access_token,其他業(yè)務(wù)邏輯服務(wù)器所使用的access_token均來自于該中控服務(wù)器,不應(yīng)該各自去刷新,否則容易造成沖突,導(dǎo)致access_token覆蓋而影響業(yè)務(wù);
同時我使用的是小程序的 wafer2-node-sdk 解決方案,這個是基于 Koa2 來實現(xiàn)的,寫接口什么的也比較順利,但是竟然沒找到全局變量的功能,然后網(wǎng)上搜,有說用數(shù)據(jù)庫的,緩存的,我不想這么一個簡單的功能就用這個呀,所以我開始走上了彎路:
1.第一個版本使用 json 文件來存儲,搭配定時器來實現(xiàn),但是第一次可以用,但是再以后卻開始 token 過期了.不解:后來意外的發(fā)現(xiàn),因為我是用 require('./**/**.json') 的方式引入的 json 文件,這樣帶來一個問題,json 發(fā)生變化是,那個實例并不會發(fā)生改變,導(dǎo)致取到的永遠是第一次加載時的值.
2.沒辦法,只有上 redis 了,一開始感覺一個簡單的功能沒必要,其實用 redis 也比較方便,服務(wù)器使用的 CentOS,然后yum install redis -y 就可以了,然后搭配 redis 庫, 配合 expire 存儲,也實現(xiàn)了功能,同時使用 schedule-node 來執(zhí)行定時刷新,我設(shè)置的刷新頻率是一個小時一次,剛開始還不錯,可是用完還是會報過期.懵逼中.
3.無意中搜到一篇文章,簡直是救命稻草:原文找不到了,意思是同一個 AppID 在其他地方請求時也會導(dǎo)致過期,我擦,因為我在本地也有開發(fā)環(huán)境,也會定時請求,趕緊把本地的請求關(guān)閉,同時線上開啟了一個獲取 access_token 的接口,本地要用都從這個接口獲取,幾天下來,總算解決了問題.同時使用 node_env 來判斷線上還是本地,避免認為導(dǎo)致的錯誤.
希望對大家有幫助.