资讯专栏INFORMATION COLUMN

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

LinkedME2016 / 1258人阅读

摘要:所以,量大的请求,不能每次发起请求都调用一次接口,次很快就请求完了,次用完了就没有新的用了,所以不能每发起一次请求都生成一个的,如果这样做,就造成不良后果。

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生成接口生成新的access_token,如果没有超时,那就使用缓存中的access_token。

 $result["expires"]){
        $data = array();
        $data["access_token"] = getNewToken($appid,$appsecret);
        $data["expires"]=time()+7000;
        $jsonStr =  json_encode($data);
        $fp = fopen("access_token.json", "w");
        fwrite($fp, $jsonStr);
        fclose($fp);
        return $data["access_token"];
    }else{
        return $result["access_token"];
    }
}
 
//获取新的access_token
function getNewToken($appid,$appsecret){
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}";
    $access_token_Arr =  https_request($url);
    return $access_token_Arr["access_token"];
}
 
//向获取access_token接口发起请求
function https_request ($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $out = curl_exec($ch);
        curl_close($ch);
        return  json_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;
?>

生成的本地缓存文件为
access_token.json
格式如下

{
  "access_token":"16_tTsgZ08Mf13NHsO8XT19faWwQVXKuBzLs3wElIyzGWMkcFLrSCBCKpXRd8dKuPC-A32fSJPIwKx4smzOgraV8U-2qzic6UIchBqk_LqmLPwDmPj4luOf6YQor0GotWOBg1bPsB29KzZy0ChFGCVfAIACYR",
  "expires":1544866066
}

作者:TANKING
网站:http://likeyunba.com

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/62064.html

相关文章

  • 一个Accecc_Token生成缓存读取微信/小程开发必须

    摘要:所以,量大的请求,不能每次发起请求都调用一次接口,次很快就请求完了,次用完了就没有新的用了,所以不能每发起一次请求都生成一个的,如果这样做,就造成不良后果。 Access_Token是调用微信和小程序各种接口的临时凭证,有效期2小时(7200秒),很多接口都需要调用access_token接口生成一个access_token的,例如微信支付,微信分享,公众号的开发,获取openid,获...

    golden_hamster 评论0 收藏0
  • 微信小程开发教程(基础篇)3-app.js 解析

    摘要:微信小程序框架提供了一系列来帮助我们进行本地数据存储,上面的代码中使用到了和两个更多相关可以参考这里方法很容易理解,会执行获取用户信息的功能。 上一篇教程中写道,开发工具会生成一个默认的程序框架,其中程序的主流程代码包含在app.js中。默认实现中,该部分功能比较简单,不过对于学研究小程序开发还是比较有价值的。 由于代码行数不多,下面一次性贴出来后进行讲解 //app.js App({...

    lemon 评论0 收藏0
  • 剖析简易计算器带你入门微信小程开发

    摘要:源码分析这个简易计算器界面布局依然延续祖制,采用布局,貌似微信官方也是这么推荐的官方文档中就是使用。本计算器存在不完善和,因为重点不是实现全部功能,而是搞清楚微信小程序开发方法,所以非关注点不用在意。 写在前面,但是重点在后面 这是教程,也不是教程。 可以先看Demo的操作动图,看看是个什么玩意儿,GitHub地址(https://github.com/dunizb/wxapp-sCa...

    AaronYuan 评论0 收藏0
  • 剖析简易计算器带你入门微信小程开发

    摘要:源码分析这个简易计算器界面布局依然延续祖制,采用布局,貌似微信官方也是这么推荐的官方文档中就是使用。本计算器存在不完善和,因为重点不是实现全部功能,而是搞清楚微信小程序开发方法,所以非关注点不用在意。 写在前面,但是重点在后面 这是教程,也不是教程。 可以先看Demo的操作动图,看看是个什么玩意儿,GitHub地址(https://github.com/dunizb/wxapp-sCa...

    Hanks10100 评论0 收藏0
  • 剖析简易计算器带你入门微信小程开发

    摘要:源码分析这个简易计算器界面布局依然延续祖制,采用布局,貌似微信官方也是这么推荐的官方文档中就是使用。本计算器存在不完善和,因为重点不是实现全部功能,而是搞清楚微信小程序开发方法,所以非关注点不用在意。 写在前面,但是重点在后面 这是教程,也不是教程。 可以先看Demo的操作动图,看看是个什么玩意儿,GitHub地址(https://github.com/dunizb/wxapp-sCa...

    RichardXG 评论0 收藏0

发表评论

0条评论

LinkedME2016

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<