php微信小程序报48001 acce missing hint 错误
今日在做发送模板消息的时候,报了个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地址是否正确。
版权声明
本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:
愿本站的内容能为您的学习、工作带来绵薄之力。
评论