
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在进行接口开发之前,必须先要理解access_token,即接口调用的凭据。公众平台开发者文档里是这样定义的:“access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。”
从上面可以看出公众号调用接口时都需要获取一次access_token,但是为了减轻服务器负载,获取的频次是有限制的,每日限额2000次(测试账号每日限额200次),有关更多接口的调用平率,可以访问接口频率限制说明。
获取access_token采用https协议的GET方式:https://api.weixin.qq.com/cgi-bi ... ID&secret=APPSECRET,AppID和AppSecret可以在公众号的开发中心找到,测试号的页面也能直接看见测试号的AppID和AppSecret,获取access_token,grant_type参数直接使用client_credential。
接下来我们测试一下获取access_token,有两种方式,一种是在我们自己的服务器端获取,一种是使用公众平台自带的接口调试工具。
我们修改下index.php的代码,即可获得access_token,正常情况下会返回如下数据格式
- {"access_token":"ACCESS_TOKEN","expires_in":7200}
复制代码 获取access_token的代码如下:
- $APPID="wx2d926b678f502170";
- $APPSECRET="2f99076fde3686b88968489cfebecef0";
- $ACC_TOKEN_URL="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$APPID."&secret=".$APPSECRET;
- $json_data=file_get_contents($ACC_TOKEN_URL);//获取返回的json数据
- $result=json_decode($json_data,true);//解析返回的json数据
- $ACC_TOKEN=$result['access_token'];//取得access_token
- echo $ACC_TOKEN;
复制代码 使用接口调试工具时只需要输入对应的appid和secret参数即可
那么,既然每日获取access_token的频率是有上限的,并且有效期为7200s,重复获取也会导致上一次获取的access_token失效,而我们不可能总去获取access_token,这样效率太低,就需要我们考虑一个问题,如何获取和保存access_token?
思路其实不难,只要限定在7200s内,我们不会重复获取access_token即可。当然这只是作为一个简单的参考,大家如果有什么更高效的方法,欢迎随时提出来:)
SAE自带Memcache缓存服务,这里我们使用SAE的Memcache服务来存储access_token。在服务管理中找到Memcache,点击左侧“初始化Memcache”,之后输入一个容量大小,小于1M是免费的,点击确定,这样我们的Memcache就初始化成功了。现在我们要做的就是在index.php中把我们获取到的access_token存进memcache,如下:
[pre]
$mc = memcache_init();
if(mc==false)
{
echo "mc init failedn";
}
$access_token = memcache_get($mc, "token");
if(empty($access_token)==true)//如果memcache里没有键为“token”的值,则重新获取
{
$APPID="wx2d927b6789508170";
$APPSECRET="2f99076fde33586b8968489cfebccef0";
$ACC_TOKEN_URL="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$APPID."&secret=".$APPSECRET;
$json_data=file_get_contents($ACC_TOKEN_URL);
$result=json_decode($json_data,true);
$ACC_TOKEN=$result['access_token'];
//把获取到的access_token存入memcache,有效期7200s
memcache_set($mc, "token", $ACC_TOKEN, 0, 7200);//参数:memcache句柄、键值、数据、标记(默认0)、有效期(过期会被服务器清除)
$access_token = memcache_get($mc, "token");
echo $access_token;
}
[/pre]
这样我们就不用每次接口调用都去请求微信服务器,很简单吧!
如果公众号基于安全等考虑,需要获知微信服务器的IP地址列表,以便进行相关限制,微信还提供了获取微信服务器IP地址列表的接口。
采用https GET方式请求:https://api.weixin.qq.com/cgi-bi ... _token=ACCESS_TOKEN,正常情况下会返回json数据给公众号
[pre]$IP_ADDRESS_URL="https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=".$ACCESS_TOKEN;
$IP_JSON=file_get_contents($IP_ADDRESS_URL);
$ip_data=json_decode($IP_JSON);
var_dump($ip_data);[/pre]
这样会得到如下的输出,附件中包含完整代码。
游客,如果您要查看本帖隐藏内容请回复
|
|
|
|
|
|