微信公众平台获取access_Token和添加自定义菜单

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;

?>


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值