PHP+TP框架實現微信獲取JS-SDK所需的access_token,並全局緩存

一.準備工作.

1.將需要使用到的微信配置放在config.php配置文件中方便獲取.(我使用的是微信測試號)

return array(
   //'配置項'=>'配置值'
    'appID'=>'wxf58**********f2e',
    'appSecret'=>'2dd3de4141aadd088**********6264b'
);

2.簡介:access_token是公衆號的全局唯一接口調用憑據,公衆號調用各接口時都需使用access_token。access_token的有效期目前爲2個小時,需定時刷新,重複獲取將導致上次獲取的access_token失效。每天刷新access_token的次數有限,所以我們需要全局緩存access_token,避免頻繁刷新access_token出現問題,影響業務.


二.獲取access_token,並全局緩存.

我在tp框架Application/Home/Common/function.php中定義公共方法getAccessToken方法獲取access_token並全局緩存.

//該公共方法獲取和全局緩存js-sdk需要使用的access_token
function getAccessToken(){
    //我們將access_token全局緩存在文件中,每次獲取的時候,先判斷是否過期,如果過期重新獲取再全局緩存
    //我們緩存的在文件中的數據,包括access_token和該access_token的過期時間戳.
    //獲取緩存的access_token
    $access_token_data = json_decode(F('access_token'),true);

    //判斷緩存的access_token是否存在和過期,如果不存在和過期則重新獲取.
    if($access_token_data !== null && $access_token_data['access_token'] && $access_token_data['expires_in'] > time()){

        return $access_token_data['access_token'];

    }else{
        //重新獲取access_token,並全局緩存
        $curl = curl_init();

        curl_setopt($curl,CURLOPT_URL,'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='
            .C('appID').'&secret='.C('appSecret'));

        curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);

        //獲取access_token
        $data = json_decode(curl_exec($curl),true);
        if($data != null && $data['access_token']){
            //設置access_token的過期時間,有效期是7200s
            $data['expires_in'] = $data['expires_in'] + time();

            //將access_token全局緩存,快速緩存到文件中.
            F('access_token',json_encode($data));

            //返回access_token
            return $data['access_token'];

        }else{
            exit('微信獲取access_token失敗');
        }
    }
}

以上是獲取js-sdk所需的access_token,並全局緩存的流程.若果有錯誤請大家指出,謝謝



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章