php定时刷新token,php微信开发-自动刷新accesstoken

这是一个PHP函数,用于通过cURL调用微信API获取access_token。首先初始化cURL,然后设置参数,包括URL、请求类型、返回数据类型等。如果请求类型为POST,还会设置POST参数。最后,执行请求并处理返回的数据,如果数据类型为json,则进行解码。此外,代码还包含了两种处理access_token的存储方式,一种是检查session,另一种是读写本地文件。
摘要由CSDN通过智能技术生成

1 <?php2 public function http_curl($url,$type=‘get‘,$res=‘json‘,$arr=‘‘)//接口调用函数

3 {4 /*

5 *$cur 接口url string6 *$type 请求类型 string7 $res 返回数据类型 string8 $arr post请求参数 string9 */

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_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.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 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值