微信公众平台获取access_Token和添加自定义菜单
2018-04-07 20:48
381 查看
1、自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。 2、一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。 3、创建自定义菜单后,菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。accesstoken是公众号的全局唯一票据,公众号调用各接口时都需使用accesstoken。开发者需要进行妥善保存。accesstoken的存储至少要保留512个字符空间。accesstoken的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。请求地址 2小时期限 每天获取次数有限 需要保存下来,过期再重新获取 https://api.weixin.qq.com/cgi-bin/token?granttype=clientcredential&appid=APPID&secret=APPSECRET获取access_token一般包含两个文件,access_token.php文件用于判断access_token.txt文件中的acess_token是否到期并重新获取放在access_token.txt文件中。为了安全考虑加个appsecret,用于验证公众号相关权限信息。如果每次都用2个参数唯一定位公众号不仅麻烦,而且也不安全,容易将消息暴露在公开环境,故微信出于安全及方便考虑,让开发者用appid和appsecret去拿access_token,即用access_token就可定位一个公众号,不仅安全,而且方便,当然也可以有其它的深意,这里不做深入研究。获得access_token的方式:
用get方式请求:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=myappid&secret=mysappsecret
<?php define("APPID", "wxd956d47a2a7a90c5"); define("APPSECRET", "6add39f00f233b3985357d3b30bb401e"); define('TOKEN_FILE','access_token.txt'); // $access_token=access_token(); // echo $access_token; //返回access_token function access_token(){ //判断文件是否存在 if (is_file(TOKEN_FILE)) { //读取文件 $str=file_get_contents(TOKEN_FILE); $arr=json_decode($str,true); //判断是否过期 if (time() - $arr['create_time'] > $arr['expires_in']-200) { return getNewAccess_token(); }else{ return $arr['access_token']; } }else{ //不存在 return getNewAccess_token(); } } //得到新的access_token function getNewAccess_token(){ $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".APPID."&secret=".APPSECRET; // echo $url; //程序请求api $ch = curl_init();//初始化一个cURL会话,创建一个新的cURL资源 // 设置URL和相应的选项 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_SSLVERSION, 1); // 抓取URL并把它传递给浏览器 $str=curl_exec($ch); //关闭cURL资源,并且释放系统资源 curl_close($ch); //将str->数组 $arr=json_decode($str,true); //添加新元素 $arr['create_time']=time(); //数组-》json $str=json_encode($arr); //保存access_token file_put_contents(TOKEN_FILE, $str); return $arr['access_token']; // print_r($arr); } ?>
<?php include 'access_token.php'; $access_token=access_token(); $url= "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=$access_token"; $menu=<<<menu { "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" }, { "name":"菜单", "sub_button":[ { "type":"view", "name":"搜索", "url":"http://www.soso.com/" }, { "type":"click", "name":"赞一下我们", "key":"V1001_GOOD" }] }] } menu; $ch = curl_init();//初始化一个cURL会话,创建一个新的cURL资源 // 设置URL和相应的选项 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_SSLVERSION, 1); curl_setopt($ch, CURLOPT_POST, true ); curl_setopt($ch, CURLOPT_POSTFIELDS, $menu); // 抓取URL并把它传递给浏览器 $str=curl_exec($ch); //关闭cURL资源,并且释放系统资源 curl_close($ch); echo $str; ?>
相关文章推荐
- php微信2 获取自定义菜单中的access_token
- php微信2 获取自定义菜单中的access_token
- 怎样实现关键字回复,获取access_token和自定义菜单
- C#微信公众平台开发—access_token的获取存储与更新
- C#微信公众平台开发—access_token的获取存储与更新
- 微信公众平台开发-access_token获取及应用(含源码)
- 微信公众平台 获取access_token
- .Net实现微信公众平台开发接口(二) 之 “获取access_token”
- 微信公众平台开发4-access_token获取与保持有效性
- 微信公众平台开发(99) 自定义菜单获取OpenID
- .Net实现微信公众平台开发接口(二) 之 “获取access_token”
- 第五篇 :微信公众平台开发实战Java版之如何获取公众号的access_token以及缓存access_token
- PHP微信公众平台接口(二)——获取access_token
- 微信公众平台开发[5]-开发模式-高级功能-获取access_token
- 微信公众平台开发实战Java版之如何获取公众号的access_token以及缓存access_token
- 微信公众平台开发之获取并存储access_token
- php+MySQL基于百度BAE的微信公众平台获取access_token
- 【微信公众平台】订阅号无需认证获取自定义菜单功能
- 微信公众平台开发(99) 自定义菜单获取OpenID
- C#微信公众平台开发之access_token的获取存储与更新