首先,你可以将获取access_token
和获取不限制的小程序码(getUnlimitedQRCode
)的逻辑进行整合和优化,确保在access_token
过期时能够自动刷新并获取新的access_token
。这样可以提高代码的可维护性和可读性。以下是一个优化后的示例代码:
// 定义变量用于存储上次获取access_token的时间戳和access_token本身
let time1 = (new Date()).getTime();
let time2 = null;
let access_token = null;// 获取access_token的函数
function getAccessToken() {if (!time2 || (time1 - time2) > 7200000) { // 如果access_token过期了或者没有获取过uni.request({url: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=your_appid&secret=your_secret',success: (res) => {if (res.data && res.data.access_token) {access_token = res.data.access_token;time2 = (new Date()).getTime();console.log('新access_token:', access_token);getUnlimitedQRCode(access_token);} else {console.error('获取access_token失败:', res.data);}},fail: (error) => {console.error('获取access_token失败:', error);}});} else {console.log('使用旧access_token:', access_token);getUnlimitedQRCode(access_token);}
}// 获取不限制的小程序码的函数
function getUnlimitedQRCode(access_token) {let postData = {path: "pages/index/index",scene: "123",width: 300,auto_color: false};postData = JSON.stringify(postData);uni.request({url: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + access_token,method: 'POST',data: postData,header: {},success: (res) => {console.log('小程序码:', res.data);},fail: (error) => {console.error('获取小程序码失败:', error);}});
}// 在需要获取小程序码的地方调用getAccessToken函数即可
getAccessToken();
这段代码将获取access_token
和获取小程序码的逻辑封装成两个独立的函数,提高了代码的可读性和可维护性。在需要获取小程序码的地方直接调用getAccessToken()
即可,它会根据access_token
的有效性自动刷新或直接使用旧的access_token
来获取小程序码。