1. 程式人生 > >php微信開發-自動刷新accesstoken

php微信開發-自動刷新accesstoken

access json erro content pps post auto pst spa

用了如下2個方法來實現

 1 <?php
 2 public function http_curl($url,$type=‘get‘,$res=‘json‘,$arr=‘‘)//接口調用函數
 3   {
 4       /*
 5       *$cur 接口url string
 6       *$type 請求類型 string
 7       $res   返回數據類型 string
 8       $arr  post請求參數 string
 9       */
10        //1.初始化curl
11        $ch=curl_init();
12 //2.設置curl的參數 13 // curl_setopt($ch, CURLOPT_URL, $url); 14 // curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 15 16 curl_setopt_array( 17 $ch, 18 array( 19 CURLOPT_URL => $url, 20 CURLOPT_REFERER => $url, 21 CURLOPT_AUTOREFERER => true
, 22 CURLOPT_RETURNTRANSFER => true, 23 CURLOPT_SSL_VERIFYPEER => false, 24 CURLOPT_SSL_VERIFYHOST => false, 25 CURLOPT_CONNECTTIMEOUT => 1, 26 CURLOPT_TIMEOUT => 30, 27 ) 28 ); 29 30 if($type==‘post‘){ 31 curl_setopt($ch
, CURLOPT_POST, 1); 32 curl_setopt($ch, CURLOPT_POSTFIELDS, $arr); 33 //curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//測試 34 // curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//測試 35 36 } 37 //3.采集 38 $output=curl_exec($ch); 39 //4.關閉 40 if($res==‘json‘){ 41 if(curl_error($ch)){ 42 return curl_error($ch); 43 curl_close($ch); 44 }else{ 45 return json_decode($output,true); 46 } 47 } 48 } 49 // public function getWxAccessToken()//返回access_token *session解決辦法 ,存mysql或memcache都可以 50 // { 51 // //將access_token 存在session/cookie中 52 // if(isset($_SESSION[‘access_token‘])&&isset($_SESSION[‘expire_time‘])){ 53 // if($_SESSION[‘access_token‘]&&$_SESSION[‘expire_time‘]>time()){ 54 // //如果access_token在session中並沒有過期 55 // return $_SESSION[‘access_token‘]; 56 // } 57 // } 58 // else{ 59 // //如果access_token不存在或者已經過期,重新取access_token 60 // $appid=‘wx4e91a0e959b399a5‘; 61 // $appsecret=‘46cf302c8ff3585026682f6ae603da94‘; 62 // $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret; 63 // $res=$this->http_curl($url,‘get‘,‘json‘); 64 // $access_token=$res[‘access_token‘]; 65 // $_SESSION[‘access_token‘]=$access_token; 66 // var_dump($_SESSION[‘access_token‘]); 67 // $_SESSION[‘expire_time‘]=time()+7000; 68 // return $access_token; 69 // } 70 // } 71 function getWxAccessToken()// 新的返回access_token *session解決辦法 ,存mysql或memcache都可以 72 { $dir = __DIR__; 73 $tokenFile = $dir."\access_token.txt"; 74 //緩存文件名生成的目錄如下:E:\phpStudy\WWW\web1\wexin\application\index\controller\access_token.txt 75 echo $tokenFile; 76 $data = json_decode(file_get_contents($tokenFile)); 77 if ($data->expire_time < time() or !$data->expire_time) { 78 $appid = "wx4e91a0e959b399a5"; 79 $appsecret = "46cf302c8ff3585026682f6ae603da94"; 80 $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"; 81 $res = $this->http_curl($url,‘get‘,‘json‘); 82 $access_token = $res[‘access_token‘]; 83 if($access_token) { 84 $data->expire_time = time() + 7000; 85 $data->access_token= $access_token; 86 $fp = fopen($tokenFile, "w"); 87 fwrite($fp, json_encode($data)); 88 fclose($fp); 89 } 90 } else { 91 $access_token = $data->access_token; 92 } 93 return $access_token; 94 }

采用文件的形式保存在了服務器,以前用的session保存,但是並不行,都不對,也不知道漁夫是怎講的明明是錯的還當對的講,坑呀!

php微信開發-自動刷新accesstoken