access token已过期
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了access token已过期相关的知识,希望对你有一定的参考价值。
怎么办。。
需要重新获取code,然后得到access token。 即要重新调用授权界面。需要用refresh token刷新access token。
关于access token过期的解决办法:
是在内层函数中,如果执行失败,并且是access_token过期的异常,则会在request的时候抛出专门的异常。
在外围函数如果接收到了这个异常,则会抛出让装饰器接收到,装饰器收到这个异常后会删掉缓存中的token,并且重新执行该函数,这样该函数在执行的时候,就会去主动的获取最新的token。
assess token过期的原因:
测试服和线上服使用同一个app_id和secret来获取,可能会存在其中一方获取的token是旧的。
代码中没有统一的从一个地方来获取,而是直接从官网获取,导致不统一(看了代码,没有发现单独获取token的地方)。
请求获取新的token的时候失败(应该不可能,因为请求成功以后会在redis中缓存两个小时,但是发现没过多久又再次失效,因此主要原因应该不是这个)。
异步队列等待的时间较长,正好执行的时候token已经更新(应该不可能,获取token是在异步函数中执行,而不是通过函数参数来传递)。
参考技术A 需要重新获取code,然后得到access_token。即要重新调用授权界面。需要用refreshtoken刷新accesstoken。
如果刷新取到了新的accesstoken、refreshtoken、expirein,需要用这些新的去替换掉关联表中的数据。
建议每次登陆的时候都用refreshtoken去刷新一次accesstoken。本回答被提问者采纳 参考技术B 回答
token已过期是什么意思?我正在为你解答:
token代表证书已过期的意思。 token在互联网行业代表的是身份令牌。就是登录之后系统分发的一个代表这个用户的一个证书,这个证书是有时效的,如果时效结束了就会出现这个token失效的情况,要解决这个问题,如果是手机端的话,退出登录在重新登录一次就好了。 证书是指表明(或帮助断定)事理的一个凭证。证书最大的作用就是证明,但是由于造假水平的提高,目前90%之上的证书都急需证明,需要一个技术平台来提高他的防伪能力,那就是“证书上网查询”一个公用的平台。最好是免费的,同时也要保护个人隐私。
token的汉语意思是:证书,我已经为你解答出来了,希望我的回答对你有帮助!
如果您还有时间,麻烦给我个赞吧!谢谢您啦!祝您万事如意!生意兴隆!
微信access_token全局缓存,处理过期
1 //PHP创建access_token.json文件,将access_token 和 生成时间expires 保存在其中, 2 //{"access_token":"xxxx","expires":1478799661} 3 function getToken(){ 4 $appid=‘*‘; 5 $appsecret=‘**‘; 6 $file = file_get_contents("./access_token.json",true); 7 $result = json_decode($file,true); 8 echo $time(); 9 if (time() > $result[‘expires‘]){ 10 $data = array(); 11 $data[‘access_token‘] = getNewToken($appid,$appsecret); 12 $data[‘expires‘]=time()+7000; 13 $jsonStr = json_encode($data); 14 $fp = fopen("./access_token.json", "w"); 15 fwrite($fp, $jsonStr); 16 fclose($fp); 17 return $data[‘access_token‘]; 18 }else{ 19 return $result[‘access_token‘]; 20 } 21 } 22 function getNewToken($appid,$appsecret){ 23 $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}"; 24 $access_token_Arr = https_request($url); 25 return $access_token_Arr[‘access_token‘]; 26 } 27 function https_request ($url){ 28 $ch = curl_init(); 29 curl_setopt($ch, CURLOPT_URL, $url); 30 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 31 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 32 $out = curl_exec($ch); 33 curl_close($ch); 34 return json_decode($out,true); 35 } 36 echo getToken();
以上是关于access token已过期的主要内容,如果未能解决你的问题,请参考以下文章