PHP微信开发之获取access_token

本文介绍了一种使用PHP实现的微信接口AccessToken获取方法。包括使用curl发起HTTP请求的函数curlGet,以及根据appid和appsecret检查并获取/刷新AccessToken的有效性的函数checkAccessToken。若AccessToken未过期则直接返回,否则通过API重新获取并更新数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function curlGet($url){
		$ch = curl_init();
		$header = "Accept-Charset: utf-8";
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
		curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
		curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
		curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		$temp = curl_exec($ch);
		return $temp;
	}
	

function checkAccessToken($appid,$appsecret){
        $condition = array('appid'=>$appid,'appsecret'=>$appsecret);
	$access_token_set=M('AccessToken')->where($condition)->find();//获取数据
	if($access_token_set){ 
		//检查是否超时,超时了重新获取
		if($access_token_set['AccessExpires']>time()){
                        //未超时,直接返回access_token
			return $access_token_set['access_token'];
		}else{
                        //已超时,重新获取
			$url_get='https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$appsecret;
			$json=json_decode(curlGet($url_get));
			$access_token=$json->access_token;
			$AccessExpires=time()+intval($json->expires_in);
			$data['access_token']=$access_token;
			$data['AccessExpires']=$AccessExpires;
			$result = M('AccessToken')->where($condition)->save($data);//更新数据
			if($result){
				return $access_token;
			}else{
				return $access_token;
			}
		}
	}else{
                /*数据库中无$appid,$appsecret对应的记录需要再做处理,如插入到数据库		
		return 0;*/
	}
}


转载于:https://my.oschina.net/dkiss/blog/614517

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值