//app.js // global.regeneratorRuntime = require('./utils/regenerator/runtime-module') import api from './utils/api.js'; App({ async onLaunch() { // 展示本地存储能力 // var logs = wx.getStorageSync('logs') || [] // logs.unshift(Date.now()) // wx.setStorageSync('logs', logs) let userInfo = wx.getStorageSync('userinfo'); let openId = wx.getStorageSync('openId') || ''; let needReload = wx.getStorageSync('reload-userinfo'); this.globalData.openId = openId if (!needReload && userInfo) { this.globalData.userInfo = userInfo; return; } if (openId) { // 已经有openid了 可以直接获取用户信息 console.log('init get user info'); await this.getUserInfo(openId); } else { console.log('await user login'); let code = await this.getLoginCode(); if (code) { await this.processLogin(code); } } // 获取用户信息 }, async getLoginCode() { let loginCode = null; // 登录并获取openid try { loginCode = await (() => { return new Promise((resolve, reject) => { wx.login({ success: res => { // 发送 res.code 到后台换取 openId, sessionKey, unionId console.log('login==>', res); if (res.errMsg == 'login:ok') { resolve(res.code) } else { reject(res); } }, fail: (res) => { reject(res); } }) }) })(); } catch (e) { console.log('get login code error,', e); } return loginCode; }, async processLogin(code) { try { let data = await api.userLogin(code); // 获取openid this.globalData.openId = data.openid; // 保存用户openid wx.setStorageSync('openId', this.globalData.openId); } catch (e) { console.log('login error->', e); } }, getOpenId() { return new Promise(async(resolve, reject) => { if (this.globalData.openId) { resolve(this.globalData.openId) } else { wx.login({ success: async res => { if (res.errMsg == 'login:ok') { await this.processLogin(res.code); resolve(this.globalData.openId) } } }); } }) }, async getUserInfo() { try { let openid = this.globalData.openId; let userInfo = await api.userInfo(openid, false); wx.removeStorageSync('reload-userinfo') console.log('init user info data', userInfo); this.globalData.userInfo = userInfo; wx.setStorageSync('userinfo', userInfo) } catch (e) { console.log('init user info error', e); } }, async refreshUserInfo() { let userInfo = await api.userInfo(null, false); console.log('refresh user info data', userInfo); this.globalData.userInfo = userInfo; }, globalData: { wxuserInfo: null, userInfo: null, openId: '' } })