首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。