获取access token的问题
我想让它每隔7200秒获取一次 下面这个方法为什么不行呢?每次刷新页面都会重新获取一次 这是为什么?
if(isset($_SESSION['access_token'])&&$_SESSION['expire_time']>time()){
return $_SESSION['access_token'];
}else{
$access_token = $this -> access_token();
$url='https://api.weixin.qq.com/cgi-bin/menu/create?access_token=' . $access_token['access_token'];
$this->curl($url,$data);
$_SESSION['access_token']=$access_token['access_token'];
$_SESSION['expire_time']=time()+7200;
}
echo $_SESSION['access_token'];
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
access_token不能保存在SESSION中。
SESSION是跟客户端的回话,简单来说就是每个用户的SESSION都不同,而access_token是全局的,每7200秒刷新一次,如果你放在SESSION中就意为着每个用户都有一个自己的access_token,显然是不对的。你这样的代码造成的问题就是第二个用户登入网站后,第一个用户的access_token就失效了,实际上access_token跟用户无关。
正确的做法应该是存在本地缓存文件中,或者保存Redis缓存、或者DB中,每7200秒刷新一次。
你应该好好看看session机制,给session定义一个expire_time就可以了吗
session的过期时间默认的过期时间是在php.ini里设置的ini_set('session.gc_maxlifetime',3600);
然后你上述的情况 sessionid是存在cookie里的,应该采用cookie或者数据库来设置过期时间比较好,
setcookie(session_name(), session_id(), 7200);不知我是否讲清楚了