php微信小程序报48001 acce missing hint 错误

来源:网络 文章列表 2019-03-27 8
微信小程序报48001错误的解决办法。

今日在做发送模板消息的时候,报了个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地址是否正确。

 

 

版权声明

本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:
愿本站的内容能为您的学习、工作带来绵薄之力。

评论

  • 随机获取
点击刷新
精彩评论