今日在做发送模板消息的时候,报了个48001access_token missing hint 错误,查看errcode 的合法值,里面并没有48001,就纳闷了。
注意,本文指的是小程序里报48001错误,如果你是做网页授权报48001错误,请看这篇文章 微信开发网页授权时报”errcode”:48001,errmsg:api unauthorized, hints。
冷静下来想了下,access_token错误一般是以下几种情况:
1、是不是多次重复请求了access_token的值,即新取的access_token值把之前的access_token值覆盖了。
2、access_token值过期了,小程序里access_token值时效性是7200秒。
3、获取的token时appid或者appsecret密钥错误
4、请求的api地址不正确,可能将api地址写成了其他的。
5、是否已经完成了微信认证。
大致我想的情况就是上面4种。
对于1-2的情况,我们可以写一个函数,来判断access_token值是否过期,如果过期了,就重新取。
public function getSiteToken_xcx(){
$this->config = D('Setting')->fetchAll();
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' .$this->config['wxapp']['appid'] . '&secret=' .$this->config['wxapp']['appsecret'];
$data = json_decode(file_get_contents(BASE_PATH."/access_token_xcx.json"));
if($data->expire_time < time()) { // 判断是否过期,过期了重新取
$result = $this->curl->get($url);
$result = json_decode($result, true);
if(!empty($result['errcode'])){
return false;
} else {
// 将token存储在本地文件中
$data->expire_time = time() + 7200;
$data->access_token = $result['access_token'];
$fp = fopen(BASE_PATH."/access_token_xcx.json", "w");
fwrite($fp, json_encode($data));
fclose($fp);
return $result['access_token'];
}
}
return $data->access_token;
}
第三种,那么只能核对下appid或者appsecret密钥是否有误了。
我的情况是第四种,我是直接复制以前公众号开发的代码,一失足,就是大半天的排错啊………
公众号发模板消息:https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={$site_token}
小程序模板消息 https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token={$site_token}
小程序多了个wxopen。所以,如果你也报这个错误的话,可以核对下api地址是否正确。
米趣网免责声明
1、本站所有模板素材资源均来自用户分享和网络收集,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服,我们核实后会立即删除。2、米趣网作为第三方中介平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益。
3、非平台线上交易的项目,出现任何后果均与米趣网无关;无论卖家以何理由要求线下交易的,请联系管理举报。
注意事项
1、本站所有素材资源均来自用户分享和发布,部分未经测试可用,并不保证百分百无误及完整。2、素材资源仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。
3、米趣网会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全。
4、米趣网无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别。