php access token缓存,获取微信accesstoken并文件缓存方式

function getAccessToken()

{

$appid = 'wx53cxxxxxx';

$secret = 'f46xxxxxxxxxxxddda2';

$accessTokenFile = './accessToken.txt';

if (file_exists($accessTokenFile)) {//文件存在

$time = time();

$tokenFileJson = file_get_contents($accessTokenFile);

$fileArrData = json_decode($tokenFileJson,true);

$fileExpireTime = isset($fileArrData['expireTime'])?$fileArrData['expireTime']:0;

if ($fileExpireTime > $time) {//请求token未过期

$accessToken = isset($fileArrData['accessToken'])?$fileArrData['accessToken']:'';

return $accessToken;

}else{

$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret;

$jsonData = file_get_contents($url);

$arrData = json_decode($jsonData,true);

file_put_contents('./getToken.txt','【'.date("Y-m-d H:i:s").'】'.$jsonData.PHP_EOL,FILE_APPEND);

if (isset($arrData['errcode'])) {

exit($arrData['errmsg']);

}else{

$expireTime = time() + 5000;//过期时间

$accessToken = isset($arrData['access_token'])?$arrData['access_token']:'';

file_put_contents($accessTokenFile,json_encode(array('accessToken'=>$accessToken,'expireTime'=>$expireTime)));

return $accessToken;

}

}

}else{//文件不存在

$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$secret;

$jsonData = file_get_contents($url);

$arrData = json_decode($jsonData,true);

file_put_contents('./getToken.txt','['.date("Y-m-d H:i:s").']'.$jsonData.PHP_EOL,FILE_APPEND);

if (isset($arrData['errcode'])) {

exit($arrData['errmsg']);

}else{

$expireTime = time() + 5000;//过期时间

$accessToken = isset($arrData['access_token'])?$arrData['access_token']:'';

file_put_contents($accessTokenFile,json_encode(array('accessToken'=>$accessToken,'expireTime'=>$expireTime)));

return $accessToken;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是获取企业微信accesstoken的Java方法,使用Redis缓存缓存时间为1.5小时: ```java import redis.clients.jedis.Jedis; public class AccessTokenManager { // 企业微信应用ID private final static String APP_ID = "your_app_id"; // 企业微信应用的secret private final static String APP_SECRET = "your_app_secret"; // Redis缓存的key值 private final static String REDIS_KEY = "access_token"; // Redis缓存缓存时间,单位:秒 private final static int CACHE_TIME = 5400; //即1.5小时 /** * 获取企业微信accesstoken * * @return accesstoken */ public static String getAccessToken() { // 先从缓存获取 String accessToken = getCacheAccessToken(); if (accessToken == null) { // 缓存中没有,则重新获取 accessToken = getNewAccessToken(); // 将新的accesstoken缓存到Redis中 setCacheAccessToken(accessToken); } return accessToken; } /** * 从缓存获取accesstoken * * @return accesstoken */ private static String getCacheAccessToken() { Jedis jedis = null; String accessToken = null; try { jedis = new Jedis("localhost"); accessToken = jedis.get(REDIS_KEY); } catch (Exception e) { e.printStackTrace(); } finally { if (jedis != null) { jedis.close(); } } return accessToken; } /** * 将accesstoken缓存到Redis中 * * @param accessToken accesstoken */ private static void setCacheAccessToken(String accessToken) { Jedis jedis = null; try { jedis = new Jedis("localhost"); jedis.setex(REDIS_KEY, CACHE_TIME, accessToken); } catch (Exception e) { e.printStackTrace(); } finally { if (jedis != null) { jedis.close(); } } } /** * 获取新的accesstoken * * @return accesstoken */ private static String getNewAccessToken() { // 发送HTTP请求,获取新的accesstoken String url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + APP_ID + "&corpsecret=" + APP_SECRET; String accessToken = null; try { String response = HttpClientUtils.sendGet(url); JSONObject jsonObject = JSONObject.parseObject(response); accessToken = jsonObject.getString("access_token"); } catch (Exception e) { e.printStackTrace(); } return accessToken; } } ``` 以上方法中,`APP_ID`和`APP_SECRET`需要替换为自己企业微信应用的对应值。其中获取新的accesstoken的方法使用了`HttpClientUtils.sendGet(url)`这个HTTP请求的工具类,工具类可以自行百度实现。 另外,以上方法中的`Jedis`是Redis的Java客户端,需要通过`maven`引入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值