"1w5JN7f6h0dNF8Ryz1q5QYYW_2Ia", "secret"=>"ErjDPl30eKVESOQLk2vpfVQjdpYa", "host"=>"https://device.api.ct10649.com:8743/", ); return $config; } function test() { $token=json_encode(array("ji"=>"hdsj","ggdsc"=>"dcdf","jdfi"=>"hdsj","ggfddsc"=>"dcdf")); file_put_contents("./token11",$token); return file_get_contents("./token11"); } //请求地址 参数 和 头部 function curl($url,$data='',$header="",$method="POST"){ $ch = curl_init() ; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER,$header); // curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); /* curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');*/ // curl_setopt($ch, CURLOPT_VERBOSE, 1); //debug模式 curl_setopt($ch, CURLOPT_SSLCERT, "./server.crt"); //client.crt文件路径 curl_setopt($ch, CURLOPT_SSLCERTPASSWD, "IoM@1234"); //client证书密码 curl_setopt($ch, CURLOPT_SSLKEY, "./server.key"); if($method=="POST"||$method=="PUT"||$method=="DELETE"){ curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $info = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); if (curl_errno($ch)) { return 'Errno'.curl_error($ch); }else{ return array($status,$info); } curl_close($ch); } //请求地址 参数 和 头部 function curltest($url,$data='',$header="",$method="POST"){ $ch = curl_init() ; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER,$header); if($method=="POST"||$method=="PUT"||$method=="DELETE"){ curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $info = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); if (curl_errno($ch)) { return 'Errno'.curl_error($ch); }else{ return array($status,$info); } curl_close($ch); } //鉴权接口 function Auth() { // $config= $data="appId=1w5JN7f6h0dNF8Ryz1q5QYYW_2Ia&secret=ErjDPl30eKVESOQLk2vpfVQjdpYa"; $header=[ "Content-Type:application/x-www-form-urlencoded", ]; // https://server:port/iocm/app/sec/v1.1.0/log $rescurl=curl("https://device.api.ct10649.com:8743/iocm/app/sec/v1.1.0/login",$data,$header); // return $rescurl; if($rescurl[0]==200){ $res=json_decode($rescurl[1],true); $res["token_time_out"]=$res['expiresIn']+time(); $res["refresh_token_time_out"]=time()+86400*7; $result=json_encode($res); file_put_contents("./token.json",$result); return $result; }else{ return $rescurl[1]; } } //刷新token并返回新的token function refreshtoken(){ $token=session("token"); //查看刷新token是否过期,过期了调鉴权接口,没过期调刷新 if($token["refresh_token_time_out"]>=time()){//刷新 $data=[ "appId"=>"1w5JN7f6h0dNF8Ryz1q5QYYW_2Ia", "secret"=>"ErjDPl30eKVESOQLk2vpfVQjdpYa", "refreshToken"=>$token["refreshToken"], ]; $header=[ "Content-Type:application/json", ]; $rescurl=curl("https://device.api.ct10649.com:8743/iocm/app/sec/v1.1.0/refreshToken",json_encode($data),$header); if($rescurl[0]==200){ $res=json_decode($rescurl[1],true); $res["token_time_out"]=time()+$res['expiresIn']; $res["refresh_token_time_out"]=time()+86400*7; //session('token',$res);// $result=json_encode($res); file_put_contents("./token.json",$result); return $result; }else{ return $rescurl[1]; } }else{//鉴权 return Auth(); } } //获取token function gettoken(){ //判断是否设置session以及session里的token是否过期 if(file_exists("./token.json")){ $token=json_decode(file_get_contents('./token.json'),true); if($token['token_time_out']>=time()){//还没有过期直接返回token; return json_encode($token); }else{ return refreshtoken(); } }else{ return Auth(); } }