当前位置: 首页 > 后端技术 > PHP

一个Accecc_Token生成、缓存和读取类,微信-小程序开发必学

时间:2023-03-30 02:02:54 PHP

Access_Token是调用微信和小程序各种接口的临时凭证,有效期2小时(7200秒),很多接口都需要调用access_token接口生成一个access_token,比如微信支付、微信分享、公众号开发、获取openid、获取用户基本信息、群发接口、网页授权等接口都需要access_token,最多只能调用2000个每天二流。因此,对于大量的请求,不能每次发起请求都调用一次该接口。2000次请求很快就会用完,2000次用完后不再使用新的access_token。所以不能每次发起请求都生成access_token。如果这样做会造成不良后果。我们可以通过缓存将access_token缓存在本地或者内存中,在项目中调用缓存中的access_token。因为一个access_token在2小时内可以随意调用,没有调用次数,2小时后就过期了,我们只能请求access_token生成接口生成新的access_token。这时候新的access_token可以缓存在本地或者内存中。然后记录当前时间戳,等到项目下次需要access_token时,先判断当前时间与缓存的access_token的时间差是否超过2小时,如果超过则调用access_token生成接口生成一个newaccess_token,如果没有超时,则使用缓存中的access_token。$结果['过期']){$data=array();$data['access_token']=getNewToken($appid,$appsecret);$data['过期']=time()+7000;$jsonStr=json_encode($data);$fp=fopen("access_token.json","w");fwrite($fp,$jsonStr);fclose($fp);返回$数据['access_token'];}else{返回$result['access_token'];}}//获取新的access_token函数getNewToken($appid,$appsecret){$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$应用程序秘密}";$access_token_Arr=https_request($url);return$access_token_Arr['access_token'];}//向access_token接口函数发起请求https_request($url){$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_URL,$url);1);curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);$out=curl_exec($ch);curl_close($ch);returnjson_decode($out,true);}//调用函数getToken();//输出缓存文件有效期内的当前access_token$jsondata=file_get_contents('access_token.json');$access_token_data=json_decode($jsondata);echo$access_token_data->access_token;?>Thegeneratedlocalcachefileisaccess_token.jsonformatisasfollows{"access_token":"16_tTsgZ08Mf13NHsO8XT19faWwQVXKuBzLs3wElIyzGWMkcFLrSCBCKpXRd8dKuPC-A32fSJPIwKx4smzOgraV8U-2qzic6UIchBqk_LqmLPwDmPj4luOf6YQor0GotWOBg1bPsB29KzZy0ChFGCVfAIACYR",??"expires":1544866066}作者:TANKING网站:http://喜欢云吧