PHP定时任务获取微信access_token的方法_php技巧_脚本之家

2020-02-15 08:35栏目:bob体育平台
TAG:

本文实例讲述了PHP实现微信JS-SDK接口选择相册及拍照并上传的方法。分享给大家供大家参考,具体如下:

本文实例讲述了PHP定时任务获取微信access_token的方法。分享给大家供大家参考,具体如下:

本文讲述了php版微信公众平台开发者认证的方法。分享给大家供大家参考,具体如下:

理解:微信上传接口是拍照,或者选择本地照片,上传到微信的服务器,获取到一个id,通过token与这个id获取到图片,保存到服务器即可。

微信access_token在开发时会变的好像是几分种不一样了,这里我们来介绍关于PHP定时任务获取微信access_token的方法。

微信公众平台如何成为开发者?

通过微信js接口,调用底层程序。需要引入js文件,并进行配置。

最近开发微信公众平台,公众号调用各接口时都需使用access_token,access_token是公众号的全局唯一接口调用凭据,开发时需要进行妥善保存。 access_token有效期为7200秒 ,重复获取将导致上次获取的access_token失效。

登录微信公众平台后,点击高级功能=》开发模式=》成为开发者=》填写接口配置信息,提交后等待我司工作人员的审核.

wx.config({ debug: false, appId: 'wxed7996e9ad58345d', timestamp: 1449717454, nonceStr: 'asdfasdfasdf', signature: 'b74fb4ab4790172d2ab7e58f0051a1523aaa4803', jsApiList: [ 'chooseImage', 'uploadImage' ]});

由于微信对获取access_token的api调用次数做了限制,建议开发者全局存储与更新access_token,频繁刷新access_token会导致api调用受限,影响自身业务。

1. 开发者认证

其中appId为微信公众平台id,timestamp为当前时间戳,nonceStr为随机字符串,signature为签名。

那么有什么好的解决access_token存储和刷新的办法呢? 我的办法是:计划任务定时刷新获取access_token,然后将access_token保存到服务器本地,保存方式可以是文件、数据库或缓存中。

这个最简单了,直接上个超简单版代码:

signature是最重要参数。需要通过很多步骤来获取。

下面我使用PHP来获取access_token,并保存到本地文件中。建立一个access.php,代码如下:

exit;

首先获取access_token,能存活两小时,每天允许获取2000次。超过就不能获取了。

$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&app&secret=".AppSecret;$result = http_request;//生成文件,保存token$dir = __DIR__; //真实路径,crontab命令的php执行在cli模式下,不能正确识别相对路径,所以使用__DIR__$filename = $dir."/access_token.php";create_file;function http_request{ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); if { curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec; curl_close; return $output;}//生成文件function create_file{ $fp = fopen; fwrite; fclose;}

php文件就写上面这一句就行,微信公共平台随便填写token,写上php文件的url,然后验证即可通过,超级简单吧?官方的认证根本没有必要,因为后面的步骤没有使用的验证签名的地方,所以这个地方为了图方便直接输出返回值轻松通过验证,当然下面也给出官方要求的认证代码:

// 获取access_token 两小时有效private function get_access_token(){ $appid = C; $appsecret = C('oauth_config.appsecret'); $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$appsecret; $rurl = file_get_contents; $rurl = json_decode; if(array_key_exists{ return false; }else{ $access_token = $rurl['access_token']; return $access_token; }}

以上代码中AppID和AppSecret这两个常量是由微信公众平台提供,可以登录到微信公众平台的基本配置里获取。获取到的access_token被保存到文件access_token.php中,注意这个文件内容不要被用户访问到。

$token='11';$signarr=array($token,$_GET['timestamp'],$_GET['nonce']);if($this->signnature($signarr,$_GET['signature'])){ exit;}function signnature{ sort; if==$signature) return true; return false;}

然后获取jsticket

接下来,我们设置定时任务,我们以Linux的CentOS为例,使用crontab设置计划任务。

把上面的代码保存成php文件,在微信公共平台设置同样的token,然后验证即可通过.

版权声明:本文由bob体育app发布于bob体育平台,转载请注明出处:PHP定时任务获取微信access_token的方法_php技巧_脚本之家