// app.js const { BASE_URL, API } = require('./utils/config') const { request } = require('./utils/api') App({ onLaunch() { // 自动静默登录:wx.login 获取 code,再请求后端接口换取 openid this.silentLogin() }, silentLogin() { wx.login({ success: (loginRes) => { if (loginRes.code) { this.loginWithCode(loginRes.code) } else { console.error('wx.login 失败', loginRes.errMsg) this.handleLoginFail() } }, fail: (err) => { console.error('wx.login 调用失败', err) this.handleLoginFail() } }) }, async loginWithCode(code) { try { const data = await request({ url: BASE_URL + API.LOGIN, method: 'GET', data: { code } }) const userInfo = { openid: data.openid, sessionKey: data.session_key, unionid: data.unionid || '' } this.globalData.userInfo = userInfo this.globalData.isLoggedIn = true wx.setStorageSync('userInfo', userInfo) if (this.loginReadyCallback) { this.loginReadyCallback(userInfo) } } catch (err) { console.error('后端登录失败', err) this.handleLoginFail() } }, handleLoginFail() { this.globalData.isLoggedIn = false this.globalData.loginFailed = true if (this.loginReadyCallback) { this.loginReadyCallback(null) } }, globalData: { userInfo: null, isLoggedIn: false, loginFailed: false } })