• 公用获取token,并保存到文件中,而且距离快过期5分钟会自动获取


    公用获取token,并保存到文件中,而且距离快过期5分钟会自动获取

    很实用的代码

    //生成accesstoken
    function getAccessToken()
    {
        $appid = APPID;
        $appsecret = APPSECRET;
    
        //存access_token文件
        $logfilename = dirname(dirname(__FILE__)).'/public/accessToken/accesstoken.txt';
    
        //如果不存在则创建一份文件
        if(!file_exists($logfilename)){
            file_put_contents($logfilename,'');
            //system("chmod 777 /data/wwwroot/dxssc/public/accessToken/accesstoken.txt");
        }
    
        //读取内容
        $tokeninfo = file_get_contents($logfilename);
    
        //文件里面有内容
        if(!empty($tokeninfo)){
    
        	//转换成数组形式
            $tokeninfo = json_decode($tokeninfo,true);
            if($tokeninfo['endtime']-time()<300){
            	//预留5分钟的网络延迟时间,过期的话重新获取access_token
    
            	//清空文档里面的内容
            	file_put_contents($logfilename, '');
    			$token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid.'&secret='.$appsecret;
    
    			//获取文件内容或获取网络请求的内容
    			$result = http_Msg($token_url,"GET");
    			$fresult = $result;
    
    			//access_token过期时间点
    			$fresult["endtime"] = $result['expires_in']+time();
    			$fresult = json_encode($fresult);
    
    			//将access_token数据存在文件中
    			file_put_contents($logfilename, $fresult);
            }else{
            	//没有过期直接返回存储在文件中的access_token
            	$result = $tokeninfo;
            }
        }else{
    
        	//第一次获取access_token
            $token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid.'&secret='.$appsecret;
    
            //获取文件内容或获取网络请求的内容
            $result = http_Msg($token_url,"GET");
            $fresult = $result;
            $fresult["endtime"] = $result['expires_in']+time();
            $fresult = json_encode($fresult);
    
            //写入文件
            file_put_contents($logfilename, $fresult);
        }
        return $result;
    }
    
    
    function http_Msg($url,$method="GET",$data=array())
    {
    	$ch = curl_init();
    	$wx_data = json_encode($data);
    
    	//打开
    	$ch = curl_init();
    
    	//请求方法为POST的时候
    	if($method == "POST"){
    		curl_setopt($ch, CURLOPT_POST, true);
    		curl_setopt($ch, CURLOPT_POSTFIELDS, $wx_data);
    	}
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    	curl_setopt($ch, CURLOPT_URL, $url);
    	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    	$response  = curl_exec($ch);
    	//关闭
    	curl_close($ch);
    	$result = json_decode($response,true);
    	return $result;
    }
    

      

  • 相关阅读:
    Docker可视化管理工具Portainer
    Spring Cloud,Docker书籍资源、优秀博文等记录
    Grafana部署监控docker服务
    Grafana+Prometheus通过node_exporter监控Linux服务器信息
    Prometheus+Grafana+kafka_exporter监控kafka
    k8s gpu 资源设置
    mysql 塞数据
    idea 插件
    ubuntu 升级内核
    清华镜像站安装docker
  • 原文地址:https://www.cnblogs.com/lyzaidxh/p/10233159.html
Copyright © 2020-2023  润新知