关于获取access_token,创建自定义菜单

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
首先定义一个函数存储获取access_token的方法
<?php
//获取正在使用的公众号
function getCurrentMp(){
	$mp=M('mp')->where('is_use=1')->find();
	return $mp;
}
//获取正在使用的公众号的access_token
function getAccess_token(){
	$mp=M('mp')->where('is_use=1')->find();
	if(empty($mp)) return false;
	$id=$mp['id'];//正在使用的公众号的主键

	if(empty($mp['access_token']) || $mp['expire_time']<time()){
		$appid=$mp['appid'];
		$appsecret=$mp['appsecret'];
		$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;

		include APP_PATH.'LaneWeChat/lanewechat.php';
		$arr= \LaneWeChat\Core\Curl::callWebServer($url,'','GET');
		//将获取到的access_token存入数据库
		if(isset($arr['access_token'])){
			$data['access_token']=$arr['access_token'];
			$data['expire_time']=$arr['expires_in'] + time()-200;

			M('mp')->where("id=$id")->save($data);
			return $arr['access_token'];
		}else{
			return false;
		}
	}else{
		return $mp['access_token'];
	}
}
?>

然后同步菜单

//同步菜单
	public function downmenu(){
		$mp = $this->mp;
		$mp_id = $mp['id'];

		include APP_PATH.'LaneWeChat/lanewechat.php';
		$menu=Menu::getMenu($arr);

		// print_r($menu);
		// // exit;

		// print_r($menu['menu']['button']);
		// exit;

		$menu = $menu['menu']['button'];

		$arr = array();
		$index = 1;
		foreach ($menu as $key => &$value) {
			$value['mp_id']= $mp_id;
			$value['index'] = $index;
			$value['pindex'] = 0;
			$value['sort'] = $index;
			
			if(!empty($value['sub_button'])){
				$value['type'] = '';//设置一级菜单,默认值
				$value['content'] = '';//设置一级菜单,默认值

				$sub_menu = $value['sub_button']; //把二级菜单入到变量$sub_menu
				unset($value['sub_button']);
				$arr[] = $value;

				$subindex = 1;
				foreach ($sub_menu as $subkey=>&$subvalue) {
					$subvalue['mp_id'] = $mp_id;
					$subvalue['index'] = $index . $subindex;
					$subvalue['pindex'] = $index;
					$subvalue['sort'] = $subindex;

					if($subvalue['type']== 'click'){
						$subvalue['content'] = $subvalue['key'];
						unset($subvalue['key']);
					}else if($subvalue['type']=='view'){
						$subvalue['content'] = $subvalue['url'];
						unset($subvalue['url']);
					}else {
						 
						 $subvalue['content'] = $subvalue['type'];
						 $subvalue['type'] = 'event';
						 unset($subvalue['key']);
					}

					unset($subvalue['sub_button']);
					$arr[] = $subvalue;

					$subindex++;
				}
				
			}else{
				if($value['type']== 'click'){
					$value['content'] = $value['key'];
					unset($value['key']);
				}else if($value['type']=='view'){
					$value['content'] = $value['url'];
					unset($value['url']);
				}else {
					 
					 $value['content'] = $value['type'];
					 $value['type'] = 'event';
					 unset($value['key']);
				}

				unset($value['sub_button']);
				$arr[] = $value;
			}
			$index++;
		}

		// print_r($arr);
// exit;

		$model = M('menu');
		$model->where("mp_id={$mp['id']}")->delete();
		foreach ($arr as $key => $value) {
			$model->add($value);	
		}
		$this->redirect('index');
		
	}

创建自定义菜单

 public function index(){
		$mp = $this->mp;
		$data = M('menu')->where("mp_id={$mp['id']}")->order('id')->select();
		// print_r($data);
		// exit;
		$data2 = $data;
		foreach ($data as $k => $v) {
			foreach ($data2 as $k2 => $v2) {
				if ($v['index'] == $v2['pindex']) {
					$data[$k]['sub'][] = $v2;
					unset($data[$k2]);
				}
			}
		}
		// print_r($data);
		// exit;
		$this->assign('mpInfo',$mp);
		$this->assign('list',$data);
		$this->display();
	}


	public function menuedit(){
		// $mp = M('mp')->where('is_use=1')->find();
		$mp = $this->mp;
		// 写入数据库
		$data1 = I('post.data');
		$arr = array();
		foreach ($data1 as $key1 => $value1){
			$row = array();
			$row['mp_id'] = $mp['id'];
			$row['index'] = $value1['index'];
			$row['pindex'] = $value1['pindex'];
			$row['type'] = $value1['type'];
			$row['name'] = $value1['name'];
			$row['content'] = $value1['content'];
			$row['sort'] = $value1['sort'];
			$arr[] = $row;
		}
		$model=M('Menu');
        $model->where("mp_id = {$mp['id']}")->delete();
        $model->addAll($arr);
     	//创建微信公众号的菜单
		include APP_PATH.'LaneWeChat/lanewechat.php';
		$ret=Menu::setMenu($arr);
		if($ret === true){
			$this->ajaxReturn(array('msg'=>"创建菜单成功"));
		}else{
			$this->ajaxReturn(array('msg'=>$ret));
		}
	}


[038] 微信公众帐号开发教程第14篇-自定义菜单创建菜单事件响应 微信5.0发布 2013年8月5日,伴随着微信5.0 iPhone版的发布,公众平台也进行了重要的更新,主要包括: 1)运营主体为组织,可选择成为服务号或者订阅号; 2)服务号可以申请自定义菜单; 3)使用QQ登录的公众号,可以升级为邮箱登录; 4)使用邮箱登录的公众号,可以修改登录邮箱; 5)编辑图文消息可选填作者; 6)群发消息可以同步到腾讯微博。 其中,大家议论最多的当属前两 阅读详情

相关推荐

微博 access_token 生成

新浪微博提供的代码:https://github.com/sunxiaowei2014/weibo4j-oauth2-beta3.1.1/ 使用方法 1、 请先填写相关配置:在Config.properties里  client_ID :appkey 创建应用获取到的appkey client_SERCRET :app_secret 创建应用获取到的appsecret  redire

3378

Oauth2自定义access_token 生成策略

最近项目中遇到一种特殊使用Oauth2的场景,总之要实现的效果就是一个账号登陆时,该账号其它地方的登陆应该立刻失效!但是Oauth2中默认的生成策略是如果该账号下的access_token未过期,会从保存的地方取出旧的对象返回,更新下过期时间继续使用,这样就达不到想要的效果! 源码解读: 首先看源码部分: @RequestMapping(value = "/oauth/token", me...

小僧下山踏红尘 1万+

关于获取access_token、同步菜单以及创建自定义菜单

1.首先我们要有appid(wx4ff531ee8a470861)和appsecret(2ec9b2f1a1f67b8743d23f9fc70c1c97)。2.这里我们用的是rh_mp与rh_mp_menu数据表。3.首先我们在Common模块的Common文件夹下创建function.php文件,在里面我们写入以下获取access_token的代码和获取当前公众号的代码:function get...

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 908

登录生成双token的理解

token机制是为了提高系统安全性而采用的一种措施。它指的是在登录成功后,会生成两个token返回给客户端::用于访问受限资源,有一定的生命周期,过期需要重新获取。:用于刷新Access Token,生命周期较长。

m0_64479814的博客 6140

如何给token加密以及token的生成

将生成的密钥保存在服务器端,并使用该密钥对需要加密的 token 进行加密。如果使用的是对称加密算法,如 AES,则使用相同的密钥进行加密和解密。如果使用的是非对称加密算法,如 RSA,则使用公钥进行加密,使用私钥进行解密。需要注意的是,在实现过程中还要考虑到其他安全问题,例如 token 泄露、中间人攻击等,以确保加密后的 token 能够真正保护数据的安全。定期更换密钥以维持安全性,并确保采用足够复杂度的密钥,例如使用足够长的密码、随机数等。

qq_53818683的博客 3775

SpringSecurity之OAuth2 令牌accessToken的生成过程

SpringSecurity之OAuth2 令牌的生成过程的主要代码分析

clonetx的博客 9648

微信中获取access_token,同步菜单创建自定义菜单

一:获取access_tokenaccess_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取access_token失效。   1.首先定义一个函数用来获取正在使用的公众号functio...

F__theOne的博客 785

【公众号开发】Access Token获取 · 请求公众号服务器创建自定义菜单 · 处理自定义菜单按钮事件

本文主要讲解AccessToken获取、构造自定义菜单、处理自定义菜单事件! 有了AccessToken,才能访问公众号服务器提供的一些接口,访问其中的一个接口来构造自定义菜单! 本文重点为自定义菜单对象的创建

Carefree_State的博客 612

php微信菜单click,PHP微信菜单自定义方法详解

这篇文章主要介绍了PHP实现创建微信自定义菜单的方法,结合实例形式分析了php创建微信自定义菜单的原理、步骤与具体实现技巧,需要的朋友可以参考下本文实例讲述了PHP实现创建微信自定义菜单的方法。分享给大家供大家参考,具体如下:在使用通用接口前,你需要做以下两步工作:1.拥有一个微信公众账号,并获取到appid和appsecret(在公众平台申请内测资格,审核通过后可获得)2.通过获取凭证接口获取到...

weixin_33606346的博客 283

php创建菜单_PHP创建微信自定义菜单的方法

本文主要和大家介绍PHP实现创建微信自定义菜单的方法,结合实例形式分析了php创建微信自定义菜单的原理、步骤与具体实现技巧,需要的朋友可以参考下,希望能帮助到大家。在使用通用接口前,你需要做以下两步工作:1.拥有一个微信公众账号,并获取到appid和appsecret(在公众平台申请内测资格,审核通过后可获得)2.通过获取凭证接口获取access_token注意:access_token是第三方...

weixin_34189259的博客 124

微信公众号自定义3*5菜单

微信自定义菜单文档地址: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013 通读文档,发现需要按照其规定的字段进行拼接就可以,设计的代码功能: JsonResult jsonResults = mpWeiXinService.getAccessToken(wxzfbid, component_appi...

豆子的博客 1776

微信公众帐号开发教程第14篇-自定义菜单创建菜单事件响应

微信5.0发布 2013年8月5日,伴随着微信5.0 iPhone版的发布,公众平台也进行了重要的更新,主要包括: 1)运营主体为组织,可选择成为服务号或者订阅号; 2)服务号可以申请自定义菜单; 3)使用QQ登录的公众号,可以升级为邮箱登录; 4)使用邮箱登录的公众号,可以修改登录邮箱; 5)编辑图文消息可选填作者; 6)群发消息可以同步到腾讯微博。

lizhengfa的专栏 1154

玩一玩微信公众号开发(二) 管理凭据和自定义菜单

管理access_tokenaccess_token介绍在前面我们成功的使用了Spring Boot Web程序和微信对接。但是这仅仅是一个开始,我们还需要获取access_token,也就是凭据,才能进行之后的工作。微信开发文档有如下介绍。 access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_toke

乐百川 1059

php 微信3 自定义菜单

1.申请成为服务号 2.申请自定义菜单,得到appid和appsecert 3.用appid和appsecert获得access token 4.将菜单组织成结构,通过post提交给接口 5.在消息接口中处理event事件,其中的click代表菜单点击,通过响应菜单结构中的key值回应消息 static function createMean($access_token){ $u

笨笨的学习 2580

微信企业号开发之自定义菜单

一、登录到开放平台,进入开发者中心。二、点击自定义菜单选择创建菜单,发现需要 access_token 和 应用 id。三、去获取 access_token,应用 id 在 微信企业号开发平台《应用中心》的对应应用里。但是获取 access_token 还需要 corpid 和 corpsecret。四、获取 access_token 还需要 corpid 和 corpsecret。要去权限管理创建

阿远: 7313

如何创建自定义菜单

创建自定义菜单需注意:a.自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。b.一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。c.创建自定义菜单后,菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5  分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后...

anqingya的博客 977

微信公众平台自定义菜单开发

转载至http://deng7784033.blog.163.com/blog/static/3826426620138510731934/

JiangKan的专栏 645
上一篇: 微信开发接口接入
下一篇: 素材管理
ssh456
博客等级 码龄8年 52粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值