首页 > 代码库 > php微信开发-自动刷新accesstoken

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:\phpStudy\WWW\web1\wexin\application\index\controller\access_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