微信 token ticket jsapi_ticket access_token 获取 getAccessToken get_jsapi_ticket方法
获取jsapi_ticket
function get_jsapi_ticket()//依赖getAccessToken、https_request { //从memcache中获取 $mmc = memcache_init(); if($mmc == false){ logger("mc init failed\n"); } $last_time = memcache_get($mmc,"jsapi_last_time"); $jsapi_ticket = memcache_get($mmc,"ticket"); if(time() > ($last_time + 7200) || empty($jsapi_ticket)){ $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".getAccessToken()."&type=jsapi"; $result = https_request($url); memcache_set($mmc,"jsapi_ticket", $result["ticket"]); memcache_set($mmc,"jsapi_last_time", time()); if(empty($result["ticket"])){ echo 'jsapi_ticket null'; die;} return $result["ticket"]; } return $jsapi_ticket; }
memcache缓存存储用户信息7000秒
<?php function getAccessToken($appid,$appsecret) { $mem = new CacheMemcache(); $acc = $mem->get('access_token_'.$appid); if (!$acc) { $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret"; $result = https_request($url); $jsoninfo = json_decode($result, true); $access_token = $jsoninfo['access_token']; if ($access_token) { $expire = time() + 7000; $mem = new CacheMemcache(); $mem->set('access_token_'.$appid,$access_token,$expire); } } else { $access_token = $acc; } return $access_token; } ?>
文件存储access_token
function getAccessToken() { // access_token 应该全局存储与更新,以下代码以写入到文件中做示例 $data = json_decode(file_get_contents("access_token.json")); if ($data->expire_time < time()) { $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret"; $res = json_decode($this->httpGet($url)); $access_token = $res->access_token; if ($access_token) { $data->expire_time = time() + 7000; $data->access_token = $access_token; $fp = fopen("access_token.json", "w"); fwrite($fp, json_encode($data)); fclose($fp); } } else { $access_token = $data->access_token; } return $access_token; }