common.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. <?php
  2. function allconfig()
  3. {
  4. $config=array(
  5. "appId"=>"1w5JN7f6h0dNF8Ryz1q5QYYW_2Ia",
  6. "secret"=>"ErjDPl30eKVESOQLk2vpfVQjdpYa",
  7. "host"=>"https://device.api.ct10649.com:8743/",
  8. );
  9. return $config;
  10. }
  11. function test()
  12. {
  13. $token=json_encode(array("ji"=>"hdsj","ggdsc"=>"dcdf","jdfi"=>"hdsj","ggfddsc"=>"dcdf"));
  14. file_put_contents("./token11",$token);
  15. return file_get_contents("./token11");
  16. }
  17. //请求地址 参数 和 头部
  18. function curl($url,$data='',$header="",$method="POST"){
  19. $ch = curl_init() ;
  20. curl_setopt($ch, CURLOPT_URL, $url);
  21. curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
  22. // curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 4);
  23. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
  24. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
  25. /* curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');*/
  26. // curl_setopt($ch, CURLOPT_VERBOSE, 1); //debug模式
  27. curl_setopt($ch, CURLOPT_SSLCERT, "./server.crt"); //client.crt文件路径
  28. curl_setopt($ch, CURLOPT_SSLCERTPASSWD, "IoM@1234"); //client证书密码
  29. curl_setopt($ch, CURLOPT_SSLKEY, "./server.key");
  30. if($method=="POST"||$method=="PUT"||$method=="DELETE"){
  31. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
  32. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  33. }
  34. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  35. $info = curl_exec($ch);
  36. $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  37. if (curl_errno($ch)) {
  38. return 'Errno'.curl_error($ch);
  39. }else{
  40. return array($status,$info);
  41. }
  42. curl_close($ch);
  43. }
  44. //请求地址 参数 和 头部
  45. function curltest($url,$data='',$header="",$method="POST"){
  46. $ch = curl_init() ;
  47. curl_setopt($ch, CURLOPT_URL, $url);
  48. curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
  49. if($method=="POST"||$method=="PUT"||$method=="DELETE"){
  50. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
  51. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
  52. }
  53. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  54. $info = curl_exec($ch);
  55. $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  56. if (curl_errno($ch)) {
  57. return 'Errno'.curl_error($ch);
  58. }else{
  59. return array($status,$info);
  60. }
  61. curl_close($ch);
  62. }
  63. //鉴权接口
  64. function Auth()
  65. {
  66. // $config=
  67. $data="appId=1w5JN7f6h0dNF8Ryz1q5QYYW_2Ia&secret=ErjDPl30eKVESOQLk2vpfVQjdpYa";
  68. $header=[
  69. "Content-Type:application/x-www-form-urlencoded",
  70. ];
  71. // https://server:port/iocm/app/sec/v1.1.0/log
  72. $rescurl=curl("https://device.api.ct10649.com:8743/iocm/app/sec/v1.1.0/login",$data,$header);
  73. // return $rescurl;
  74. if($rescurl[0]==200){
  75. $res=json_decode($rescurl[1],true);
  76. $res["token_time_out"]=$res['expiresIn']+time();
  77. $res["refresh_token_time_out"]=time()+86400*7;
  78. $result=json_encode($res);
  79. file_put_contents("./token.json",$result);
  80. return $result;
  81. }else{
  82. return $rescurl[1];
  83. }
  84. }
  85. //刷新token并返回新的token
  86. function refreshtoken(){
  87. $token=session("token");
  88. //查看刷新token是否过期,过期了调鉴权接口,没过期调刷新
  89. if($token["refresh_token_time_out"]>=time()){//刷新
  90. $data=[
  91. "appId"=>"1w5JN7f6h0dNF8Ryz1q5QYYW_2Ia",
  92. "secret"=>"ErjDPl30eKVESOQLk2vpfVQjdpYa",
  93. "refreshToken"=>$token["refreshToken"],
  94. ];
  95. $header=[
  96. "Content-Type:application/json",
  97. ];
  98. $rescurl=curl("https://device.api.ct10649.com:8743/iocm/app/sec/v1.1.0/refreshToken",json_encode($data),$header);
  99. if($rescurl[0]==200){
  100. $res=json_decode($rescurl[1],true);
  101. $res["token_time_out"]=time()+$res['expiresIn'];
  102. $res["refresh_token_time_out"]=time()+86400*7;
  103. //session('token',$res);//
  104. $result=json_encode($res);
  105. file_put_contents("./token.json",$result);
  106. return $result;
  107. }else{
  108. return $rescurl[1];
  109. }
  110. }else{//鉴权
  111. return Auth();
  112. }
  113. }
  114. //获取token
  115. function gettoken(){
  116. //判断是否设置session以及session里的token是否过期
  117. if(file_exists("./token.json")){
  118. $token=json_decode(file_get_contents('./token.json'),true);
  119. if($token['token_time_out']>=time()){//还没有过期直接返回token;
  120. return json_encode($token);
  121. }else{
  122. return refreshtoken();
  123. }
  124. }else{
  125. return Auth();
  126. }
  127. }