微信 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;
  }

 

posted @ 2016-11-19 12:44  WilliamShaw  阅读(3277)  评论(0编辑  收藏  举报