113 lines
3.6 KiB
JavaScript
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: ''
|
|
}
|
|
}) |