php微信开发-自动刷新accesstoken

用了如下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.初始化curl11 $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_token60  // $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:phpStudyWWWweb1wexinapplicationindexcontrolleraccess_token.txt75 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

相关文章