当前位置:   article > 正文

uniCloud开发公众号:二、请求access_token并缓存(阿里云空间)_unicloud accesstoken

unicloud accesstoken

算是个系列内容吧,最终要实现的是将uniCloud作为后端完成“扫码关注公众号后完成网站登录”
将要涉及的内容可能包括:
0.准备工作:各种配置、基础搭建
1.接受、解析、组装xml消息
2.请求access_token并缓存(本节)
3.生成带参数二维码
4.引入、封装redis缓存方法
5.引入、配置、初始化unipush
6.解析不同情况下用户扫码时推送的事件并完成登录

系列内容全部基于uniCloud+vk-uniCloud(云函数路由)+uni-app
编辑器HbuilderX最新版
云空间为阿里云
公众号为认证服务号

本节的内容,其实之前有单独发过一篇,当时是为了使用jssdk,而且云空间必须有腾讯的(此处鄙视腾讯涨价割韭菜),但最近发现uniCloud官方推了新的请求方法,让阿里云空间也可以请求access_token了,下面一起看看:

一、服务号后台添加ip白名单(详见第0节

二、封装pubFun方法
依旧是写在/cloudfunctions/router/util/pubFunction.js文件中,

/**
 * 请求access_token
 * pubFun.getWxAccessToken();
 */
pubFun.getWxAccessToken = async () => {
	let timestamp = new Date().getTime(); // uniCloud中尽量使用毫秒时间戳

	// 判断数据库中是否有未过期的token
	// 此时这张表未创建也不影响
	let oldAccessToken = await vk.baseDao.selects({
		dbName: "wx-mp-cache",
		getOne: true,
		getMain: true,
		// 主表where条件
		whereJson: {
			name: 'accessToken'
		},
		sortArr: [{ name: 'expire_time', type: 'desc' }]
	});

	// 判断是否过期
	if (vk.pubfn.isNotNull(oldAccessToken) && oldAccessToken.expire_time > timestamp) {
		// 未过期直接返回
		return { token: oldAccessToken.token, expire_time: oldAccessToken.expire_time };
	}

	// 重新获取access_token
	// 这里就用到了固定出口的代理请求方法,就是第0节中添加到白名单的那些
	let accessTokenRes = await uniCloud.httpProxyForEip.get('https://api.weixin.qq.com/cgi-bin/token', {
		grant_type: 'client_credential',
		appid: appid, // 换成你自己的
		secret: appsecret // 换成你自己的
	});
	// 这里必须parse
	accessTokenRes = JSON.parse(accessTokenRes);
	
	// 把新的token缓存下来
	let newExpireTime = parseInt(timestamp) + 7200000
	await vk.baseDao.add({
		dbName: "wx-mp-cache",
		dataJson: {
			name: 'accessToken',
			token: accessTokenRes.body.access_token, // 注意看这里,代理请求的结果,数据是在body中……
			expire_time:newExpireTime  // 2小时过期
		}
	});
	
	// 返回
	return { token: accessTokenRes.body.access_token, expire_time: newExpireTime  };
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

三、云函数中使用这个方法
这个内容放到下一节吧,生成带参数的二维码时,需要用到这个token

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/280598
推荐阅读
相关标签
  

闽ICP备14008679号