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已过期的主要内容,如果未能解决你的问题,请参考以下文章

JWT生成token及过期处理方案

腾讯先锋怎么解决token过期

微信access_token全局缓存,处理过期

access_token过期后如何刷新token

C# 微信access_token缓存和过期刷新

微信收到的access token怎么处理