wx-app/app.js
2019-06-27 23:30:34 +08:00

113 lines
3.6 KiB
JavaScript

//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: ''
}
})