一个新站,重新与你们分享故事

【技术分享】如何多服务器、多站点共用access_token

小杂念 wangfa 346℃ 0评论

access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

由于每天的调用次数有限,所以建议公众号开发者使用中控服务器统一获取和刷新Access_token,其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致access_token覆盖而影响业务。

 

一、同一站点缓存

1.使用本地文件缓存

A.核心代码

         $res = file_get_contents('access_token.json');
         $result = json_decode($res, true);
         $this->expires_time = $result["expires_time"];
         $this->access_token = $result["access_token"];
         
         if (time() > ($this->expires_time + 3600)){
             $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
             $res = $this->http_request($url);
             $result = json_decode($res, true);
             $this->access_token = $result["access_token"];
             $this->expires_time = time();
            file_put_contents('access_token.json', '{"access_token": "'.$this->access_token.'", "expires_time": '.$this->expires_time.'}');
        }

B.access_token.json

   {"access_token":"ccccc","expire_time":1492525884}

 

2.数据库形式缓存

A.链接数据库conn.php

B.核心代码

$sqlaccess_token  = "SELECT * FROM wx_token WHERE type='access_token'";
$resultaccess_token  = mysql_query($sqlaccess_token);
$rowaccess_token  = mysql_fetch_array($resultaccess_token);
$access_tokentime=$rowaccess_token['expire'];
$access_tokenvalue=$rowaccess_token['value'];	
	
      if ($access_tokentime < time()) { $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsn;
            $result =$this->get_curl($url);
            $access_token = $result["access_token"];
       
       	    $access_tokentime2 = time() + 3000;
			
			
			 $sqlacc="UPDATE wx_token SET expire = '{$access_tokentime2}',value = '{$access_token}' WHERE  type='access_token'";
        
   		     $queryacc=mysql_query($sqlacc);
			 
			 
		
		
    } else {
      $access_token = $access_tokenvalue;
    }
    return $access_token;
  }

转载请注明:王三去-和你分享我们的故事|www.wangfa.org » 【技术分享】如何多服务器、多站点共用access_token

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址