首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >彻底解决access_token有效时间不稳定问题

彻底解决access_token有效时间不稳定问题

作者头像
许坏
发布2019-07-09 14:40:19
发布2019-07-09 14:40:19
2.2K0
举报
文章被收录于专栏:宅机吧宅机吧

问题出现就是为了解决的,观察它的失效返回码:

代码语言:javascript
复制
{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint: [ighZDA01981503!]"}

错误码是不会变得,报错内容也不变,唯一就最后那一段变了,所以完全不考虑,所以,简单写一个判断,如下图

还是简单直接点上个dome吧:

代码语言:javascript
复制
<?php
function send_post($url, $post_data) {
  $postdata = json_encode($post_data);
  $options = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type:application/json',
'content' => $postdata,
'timeout' => 15 * 60 // 超时时间(单位:s)
    )
  );
  $context = stream_context_create($options);
  $result = file_get_contents($url, false, $context);
return $result;
}
$id = @$_GET['id'];
$file = fopen("token.txt","r");//获取token
$token = fread($file, 512); 
$post_data = array(
'page' => 'pages/detail/detail',
'width' => '280',
"scene" =>$id,//如果生成二维码报错,注意此处scene参数长度32限制
);
$url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=".$token ;//必须把access_token加在此处,不能写在postdata内
$data=send_post($url, $post_data);
if (preg_match("/.*errcode.*errmsg.*/i", $data)) {
  $arr = json_decode($data,true);
  $errmsg = $arr['errmsg'];
if (preg_match("/.*access_token is invalid or not latest hint.*/i", $errmsg)) {
     $a = file_get_contents('https://github.com/xuhuai66');//这个为获取token的地址
     $b = file_get_contents('https://github.com/xuhuai66?id='.$id);//这个为本页面的地址,意思是再次请求一下本页面
echo $b; //输出正确的
  }else{
echo "./qrcode/home.jpg";//如果不是token过期的问题,就输出首页的二维码
  }
} else {
 $img = './qrcode/'.time().'.jpg';//保存到qrcode文件夹,以时间戳命名
 $r = file_put_contents($img,$data);//写入二维码内容
echo $img ;
}
?>

这是之前写的一篇关于PHP后端生成传参小程序码的源码,详情:

php生成传参小程序二维码

通过这种办法,理论上是可以不需要再设置一个定时任务来获取token了,基本上这个可以自动检测,凡是失效了就会自动请求,但是毫无疑问,这样会降低效率速度,所以建议同时设置个定时任务获取token,时间设置个一小时左右,目前我后端是如此处理的。

网上也有其他的办法,比如说用微信一个不限次数的接口访问一下,看看能不能正确返回,正确返回了就再请求需要用的接口,没有就再生成一次token,想了一下,还是上面我这种办法更适合大并发一点,你们可以自己思考一下。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 宅机吧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档