微信公众号菜单接口的调用和token的生成

本文介绍了一种在微信公众号中动态管理和更新菜单的方法,通过定时读取本地存储的access_token并检查其有效性,确保在有效期内调用微信API进行菜单的创建和删除操作。文章详细展示了如何使用PHP实现这一流程,包括获取access_token、创建菜单结构、调用API及错误处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php
/**
 *@content 两个小时之内去读取本地文件
 *@author  童立京
 *@time    2018/9/3
 */
$access_token = @file_get_contents('token');
if (!empty($access_token)) {
    $access_token = json_decode($access_token,true);
    if ($_SERVER['REQUEST_TIME'] - $access_token['creatTime'] > 7000) {
        $access_token = Token();
    }
} else {
    $access_token = Token();
}

header('content-type:text/html;charset=utf-8');

//创建菜单
//print_r(createMenu($access_token));

//删除菜单
//print_r(delmenu($access_token));

/**
 *@Content 创建菜单
 *@author  童立京
 *@return  json
 */
function createMenu($access_token)
{
     $menu = array(
            'button'=>array(
                array(
                    'name'=>urlencode('精品美图'),
                    'type'=>'click',
                    'key'=>'item1',
                ),
                array(
                    'name'=>urlencode('歌曲'),
                    'sub_button'=>array(
                        array(
                            'name'=>urlencode('热门新歌'),
                            'type'=>'click',
                            'key'=>'songs'
                        ),//第一个二级菜单
                        array(
                            'name'=>urlencode('经典老歌'),
                            'type'=>'view',
                            'url'=>'http://www.baidu.com'
                        ),//第二个二级菜单
                    )
                ),
                array(
                    'name'=>urlencode('经典回顾'),
                    'type'=>'view',
                    'url'=>'http://www.qq.com',
                ),//第三个一级菜单
        ));
    $url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$access_token['access_token'];
    $menu = urldecode(json_encode($menu));
    $result = curl($url,$menu,'post');
    return $result;
}

/**
 *@Content 删除菜单接口
 *@author  童立京
 *@return  json
 */
function delmenu($access_token)
{
    $url = 'https://api.weixin.qq.com/cgi-bin/menu/delete?access_token='.$access_token['access_token'];
    $result = file_get_contents($url);
    return $result;
}

/**
 *@Content 封装curl
 *@author  童立京
 */
function curl($url = '', $param = '',$method) {
        if (empty($url) || empty($param)) {
            return false;
        }
        $postUrl = $url;
        $curlPost = $param;
        $ch = curl_init();//初始化curl
        curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页
        curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //关闭https的验证
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
        if ($method == 'post') {
            curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
            curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
        }
        $data = curl_exec($ch);//运行curl
        curl_close($ch);
        return $data;
}

//access_token
function Token(){
    $appid = '';
    $appsecret = '';
    $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$appsecret;
    $res = file_get_contents($url);
    $res = json_decode($res,true);
    $res['creatTime'] = $_SERVER['REQUEST_TIME'];
    $res = json_encode($res);
    file_put_contents('token', $res);
    return $res;
}
?>
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值