fanbo 2 months ago
commit 25d3fcc167

@ -1,8 +1,21 @@
<?php
namespace LaneWeChat\Core;
/**
* 微信Access_Token的获取与过期检查
* 创建者Lane
* 用户名lane
* 日期13-12-29
* 时间下午5:54
* 邮箱lixuan868686@163.com
* 网站http://www.lanecn.com
*/
class AccessToken{
/**
* 获取微信Access_Token
* 这个方法首先检查本地是否已经存在有效的access_token如果不存在或已过期则调用_getAccessToken方法从微信服务器获取新的access_token。
*/
public static function getAccessToken(){
//检测本地是否已经拥有access_token并且检测access_token是否过期
$accessToken = self::_checkAccessToken();
if($accessToken === false){
$accessToken = self::_getAccessToken();
@ -10,21 +23,37 @@ class AccessToken{
return $accessToken['access_token'];
}
/**
* 从微信服务器获取微信ACCESS_TOKEN
* 这个方法构造请求微信服务器获取access_token的URL并发起GET请求获取access_token。
* @return Ambigous|bool 返回获取到的access_token数组或者在失败时返回错误信息
*/
private static function _getAccessToken(){
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.WECHAT_APPID.'&secret='.WECHAT_APPSECRET;
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.WECHAT_APPID.'&secret='.WECHAT_APPSECRET;
$accessToken = Curl::callWebServer($url, '', 'GET');
if(!isset($accessToken['access_token'])){
return Msg::returnErrMsg(MsgConstant::ERROR_GET_ACCESS_TOKEN, '获取ACCESS_TOKEN失败');
}
$accessToken['time'] = time();
$accessTokenJson = json_encode($accessToken);
//存入数据库
/**
* 请将变量$accessTokenJson给存起来这个变量是一个字符串
*/
$f = fopen('access_token', 'w+');
fwrite($f, $accessTokenJson);
fclose($f);
return $accessToken;
}
/**
* 检测微信ACCESS_TOKEN是否过期
* 这个方法检查本地存储的access_token是否过期-10是预留的网络延迟时间。
* @return bool 返回access_token是否有效
*/
private static function _checkAccessToken(){
//获取access_token。是上面的获取方法获取到后存起来的。
// $accessToken = YourDatabase::get('access_token');
$data = file_get_contents('access_token');
$accessToken['value'] = $data;
if(!empty($accessToken['value'])){

@ -1,21 +1,22 @@
<?php
namespace LaneWeChat\Core;
/**
* Created by lixuan-it@360.cn
* User: lane
* Date: 15/4/29
* Time: 上午10:51
* E-mail: lixuan868686@163.com
* WebSite: http://www.lanecn.com
* 这一行声明了类的文档注释,提供了类的基本信息。
* 创建者lixuan-it@360.cn
* 用户名lane
* 日期15/4/29
* 时间上午10:51
* 邮箱lixuan868686@163.com
* 网站http://www.lanecn.com
*/
class Auth {
/**
* 获取微信服务器IP列表
* 这个方法用于获取微信服务器的IP地址列表。
*/
public static function getWeChatIPList(){
//获取ACCESS_TOKEN
$accessToken = AccessToken::getAccessToken();
$url = 'https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token='.$accessToken;
return Curl::callWebServer($url, '', 'GET');
$accessToken = AccessToken::getAccessToken(); // 调用AccessToken类中的getAccessToken方法来获取微信的ACCESS_TOKEN。
$url = 'https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=' . $accessToken; // 构造请求微信服务器IP列表的URL并将ACCESS_TOKEN拼接在URL中。
return Curl::callWebServer($url, '', 'GET'); // 使用Curl类中的callWebServer方法发起一个GET请求到构造好的URL获取微信服务器的IP列表。
}
}
Loading…
Cancel
Save