日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

微信公眾號(hào)創(chuàng)建自定義菜單之前的準(zhǔn)備工作

 龍點(diǎn)書院 2017-02-13

微信公眾號(hào)現(xiàn)在還沒菜單,所以首頁給我們的微信公眾號(hào)創(chuàng)建幾個(gè)菜單出來。

想做出菜單,當(dāng)然是通過代碼來做,通過閱讀微信文檔發(fā)現(xiàn),我們通過代碼訪問微信API時(shí),會(huì)經(jīng)常用到一個(gè)access_token,可以說accees_token就是我們?cè)L問API的鑰匙。

access_token是公眾號(hào)的全局唯一票據(jù),公眾號(hào)調(diào)用各種接口時(shí)都需要使用access_token。開發(fā)者需要進(jìn)行妥善保存。access_token的存儲(chǔ)至少要保留512個(gè)字符空間。access_token的有效期目前為2個(gè)小時(shí),需定時(shí)刷新,重復(fù)獲取將導(dǎo)致上次獲取的access_token失效。所以我們首先解決的問題是,如何統(tǒng)一地來管理我們應(yīng)用中的access_token,而不是每次需要時(shí)去生成一次,因?yàn)檫@樣會(huì)非常低效。

我們提供的解決方法就是使用緩存,第一次獲取到access_token后將它放到緩存里并且設(shè)置緩存的過期時(shí)間是2個(gè)小時(shí),然后每次需要access_token時(shí)直接去緩存獲取,如果獲取不到了說明過期了,我們就重新生成一次再丟入緩存,這樣基本上只需要每隔2個(gè)小時(shí)左右生成一次access_token,而且因?yàn)榇蟛糠智闆r下我們都是直接從緩存中獲取access_token的,所以效率很高。

一般的PHP框架都提供了緩存的實(shí)現(xiàn),我們只要知道怎么使用就好了,因?yàn)門hink-php是目前國內(nèi)使用最多的PHP框架,我們打算也隨大流,使用Thinkphp來作為我們的框架。

(1)在官方下載3.2.3的完整版本。

(2)將解壓后的文件拷貝到edu83cn項(xiàng)目目錄下。

(3)在Eclipse里面刷新項(xiàng)目根目錄,我們就可以看到所有被復(fù)制進(jìn)來的文件。

(4)重啟WAMP服務(wù)器,訪問edu83cn項(xiàng)目地址,這樣在我們的application目錄下就會(huì)自動(dòng)生成Common和Home目錄結(jié)構(gòu),如圖所示。

微信公眾號(hào)創(chuàng)建自定義菜單之前的準(zhǔn)備工作

我們將把a(bǔ)ccess_token令牌管理類放在Application下面的Home/common目錄下。我們?cè)谠撃夸浵聞?chuàng)建一個(gè)TokenUtil.class.php的類,其命名空間就是Home\Controller。增加一個(gè)靜態(tài)方法fetchToken(),其目的就是判斷緩存中是否存在token,存在則返回,不存在則先獲取保存到緩存中。ThinkPHP默認(rèn)的緩存是文件緩存,默認(rèn)情況下緩存數(shù)據(jù)永不失效。

在配置文件convention.php里面可以查看到,如圖所示。

微信公眾號(hào)創(chuàng)建自定義菜單之前的準(zhǔn)備工作 我們來看看fetchToken()的實(shí)現(xiàn)代碼,如圖所示。
微信公眾號(hào)創(chuàng)建自定義菜單之前的準(zhǔn)備工作

代碼很少但是完成的功能卻很多,這也是PHP的一個(gè)優(yōu)點(diǎn)。上面的代碼中,我們省略了具體的獲取最新Token的代碼部分,因?yàn)樗枰{(diào)用微信API來做,而調(diào)用微信API也需要做一個(gè)封裝,所以放到后面統(tǒng)一來說。

我們分析一下后臺(tái)代碼和微信平臺(tái)之間的所有關(guān)聯(lián),發(fā)現(xiàn)有2種類型的交互:第1種就是當(dāng)用戶在手機(jī)端點(diǎn)擊微信公眾號(hào)而觸發(fā)的各種動(dòng)作,這種類型的交互是由用戶發(fā)起,經(jīng)過微信平臺(tái)轉(zhuǎn)發(fā)給我們的后臺(tái)程序,我們只需要在后臺(tái)程序里面獲取到這個(gè)消息并給出一個(gè)響應(yīng)就可以了;第2種則是由我們的后臺(tái)程序主動(dòng)出發(fā)的,例如生成菜單、獲取access_token這些,都市我們的后臺(tái)程序主動(dòng)發(fā)起,然后調(diào)用一個(gè)API接口,這類操作需要我們自己準(zhǔn)備請(qǐng)求數(shù)據(jù)并且發(fā)起一個(gè)POST或者GET請(qǐng)求。

上面說的通過調(diào)用API獲取access_token就是屬于第2種。所以就會(huì)涉及發(fā)送GET請(qǐng)求和POST請(qǐng)求問題。因?yàn)門hinkPHP作為一個(gè)服務(wù)器的腳本語言框架,它本身沒有提供直接的發(fā)送POST請(qǐng)求的輔助類,需要我們自己寫,所幸的是像這種模擬發(fā)送GET請(qǐng)求和POST請(qǐng)求 需求是PHP開發(fā)最常見的應(yīng)用場(chǎng)景了,所以我們可以很容易地在網(wǎng)上找到已有的工具類,拿來直接使用。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多