php微信开发大神看看有没有语法错误,能不能自动获取到最新access_token
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php微信开发大神看看有没有语法错误,能不能自动获取到最新access_token,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4392字,纯文字阅读大概需要7分钟。
内容图文
![php微信开发大神看看有没有语法错误,能不能自动获取到最新access_token](/upload/InfoBanner/zyjiaocheng/241/c5ace0483a754aefb40d0a02d2df8b46.jpg)
class Wechat_base_api{
private $appid='wx5d4b7d2e8bfd5793';
private $appsecret='4379ef7213c36eae5dc2ab91f9f6aced';
//构造函数
public function __construct($appid,$appsecret)
{
$this->appid = $appid;
$this->appsecret = $appsecret;
}
//获取access_token(支持自动更新凭证)
public function get_access_token()
{
$this->last_time = 1408851194;
$access_token = "jIGpovtFGZDXCB_K2vqDPTA05zP7VWZaKIHXC_qZDqEiSGONWfCzQ45fI9aksl2L188yhtPpNB61iOBS4TTtgw";
if(time() > ($this->last_time + 7200))
{
//GET请求的地址
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appid}&secret={$this->appsecret}";
$access_token_Arr = $this->https_request($url);
$this->last_time = time();
return $access_token_Arr['access_token'];
}
return $access_token;
}
//https请求(支持GET和POST)
protected function https_request($url,$data = null)
{
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
if(!empty($data))
{
curl_setopt($ch,CURLOPT_POST,1);//模拟POST
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);//POST内容
}
$outopt = curl_exec($ch);
curl_close($ch);
$outopt = json_decode($outopt,true);
return $outopt;
}
}
回复内容:
class Wechat_base_api{
private $appid='wx5d4b7d2e8bfd5793';
private $appsecret='4379ef7213c36eae5dc2ab91f9f6aced';
//构造函数
public function __construct($appid,$appsecret)
{
$this->appid = $appid;
$this->appsecret = $appsecret;
}
//获取access_token(支持自动更新凭证)
public function get_access_token()
{
$this->last_time = 1408851194;
$access_token = "jIGpovtFGZDXCB_K2vqDPTA05zP7VWZaKIHXC_qZDqEiSGONWfCzQ45fI9aksl2L188yhtPpNB61iOBS4TTtgw";
if(time() > ($this->last_time + 7200))
{
//GET请求的地址
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appid}&secret={$this->appsecret}";
$access_token_Arr = $this->https_request($url);
$this->last_time = time();
return $access_token_Arr['access_token'];
}
return $access_token;
}
//https请求(支持GET和POST)
protected function https_request($url,$data = null)
{
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
if(!empty($data))
{
curl_setopt($ch,CURLOPT_POST,1);//模拟POST
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);//POST内容
}
$outopt = curl_exec($ch);
curl_close($ch);
$outopt = json_decode($outopt,true);
return $outopt;
}
}
1.没有语法错误
2.这是谁家的id和secret...
问题大的很
过期时间写死,会导致不停请求微信接口,可能会达到接口请求上限
access_token也是写死,当达到接口请求上限后,返回都是过期错误的access_token
说到底,access_token没有缓存起来。
下面这个是根据微信提供的示例代码更改改过的:
appId = $appId ? $appId : $this->appId;
$this->appSecret = $appSecret ? $appSecret : $this->appSecret;
$this->file_path = $file_path ? $file_path : $this->file_path;
}
/**
* 获取微信AccessToken
* @return mixed
*/
private function getAccessToken() {
$data = json_decode(file_get_contents($this->file_path));
if ($data->expire_time < time()) { //判断本地存储的access_token是否过期
// 如果是企业号用以下URL获取access_token
// $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
// 其它类型公众号使用这个URL获取access_token
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
//访问微信接口,拉取access_token等信息
$res = json_decode($this->httpGet($url));
//提取出access_token
$access_token = $res->access_token;
//判断access_token是否存在,存在保存到本地文件中
if ($access_token) {
$data->expire_time = time() + 7190;
$data->access_token = $access_token;
$fp = fopen($this->file_path, "w");
fwrite($fp, json_encode($data));
fclose($fp);
}
} else { //本地存储的access_token没有过期
$access_token = $data->access_token;
}
//返回
return $access_token;
}
/**
* 拉取数据
* @param $url
* @return mixed|string
*/
private function httpGet($url) {
//本地请求,则跳过请求
if('127.0.0.1' == $_SERVER['SERVER_ADDR']){
return '';
}
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);
return $res;
}
}
微信官方文档中的 PHP 代码,感觉坑比较多,自己一个个接口试过去太耗时了(别问我是怎么知道的…)。
因为我们项目中用的是 CI 框架,在 GitHub 中这个项目:https://github.com/dodgepudding/wechat-php-sdk 的基础上稍加改动,就完成了微信的集成。
看这份代码比看官方文档要快,我是这么觉得的…
哥们 你们家的appid 跟appsecret 暴露了!!!
另外 access_token 是有次数限制的
记得缓存下来,不然请求次数过多,会出错的
内容总结
以上是互联网集市为您收集整理的php微信开发大神看看有没有语法错误,能不能自动获取到最新access_token全部内容,希望文章能够帮你解决php微信开发大神看看有没有语法错误,能不能自动获取到最新access_token所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。