用了如下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保存,但是并不行,都不对,也不知道渔夫是怎讲的明明是错的还当对的讲,坑呀!