文档章节

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

o
 osc_mervd488
发布于 2018/04/21 14:43
字数 371
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

公用获取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;
}

  

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

在Bash脚本中,如果发生某种情况,如何退出整个脚本?

问题: I'm writing a script in Bash to test some code. 我正在Bash中编写脚本来测试一些代码。 However, it seems silly to run the tests if compiling the code fails in the first pl......

技术盛宴
28分钟前
11
0
Windows安装Python+OpenCV

1、更新PyCharm中pip来源,使用清华和阿里云:https://pypi.tuna.tsinghua.edu.cn/simple/ http://mirrors.aliyun.com/pypi/simple/ 2、PyCharm查看已安装packets,添加新的安装包,从pip云端...

极客行
51分钟前
17
0
tomcat8配置虚拟目录,实现一个tomcat运行两个项目, tomcat配置URL不区分大小写

<?xml version="1.0" encoding="UTF-8"?><!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distri......

青峰Jun19er
57分钟前
19
0
HBase和MySQL存储方式的差别?或者说是,行存储和列存储的区别?

HBase借鉴列存储的思想,但是最底层依然是依靠键值对来存储数据,HBase为非关系型数据库 而MySQL则是行存储,MySQL为关系型数据库 写过程 行存储因为数据是连续的,所以只需要进行追加即可;...

其乐m
今天
25
0
一个老程序员在互联网寒冬下的感悟

1. 你千万不要认为学习技术就可以换来稳定的生活和高的薪水待遇,你更不要认为那些从事市场开发,跑腿的人,没有前途。 不清楚你是不是知道,咱们中国有相当大的一部分软件公司,他们的软件开...

北柠Java
今天
39
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部