更新小程序授权问题

This commit is contained in:
evoxwht 2021-04-14 10:33:50 +08:00
parent 574b1fc469
commit b87c062a1c
2 changed files with 738 additions and 624 deletions

View File

@ -1,157 +1,193 @@
import { CACHE_USERINFO, CACHE_TOKEN, CACHE_EXPIRES_TIME } from '../../config.js';
import {
CACHE_USERINFO,
CACHE_TOKEN,
CACHE_EXPIRES_TIME
} from '../../config.js';
import Util from '../../utils/util.js';
import { getLogo } from '../../api/api.js';
import { login } from '../../api/user.js';
import {
getLogo
} from '../../api/api.js';
import {
login
} from '../../api/user.js';
let app = getApp();
Component({
properties: {
iShidden: {
type: Boolean,
value: true,
},
//是否自动登录
isAuto: {
type: Boolean,
value: true,
},
isGoIndex:{
type: Boolean,
value:true,
},
},
data: {
cloneIner: null,
loading:false,
errorSum:0,
errorNum:3,
canIUseGetUserProfile: false // 判断是否为最新获取用户信息函数
},
attached() {
this.get_logo_url();
this.setAuthStatus();
if (wx.getUserProfile) {
this.setData({
canIUseGetUserProfile: true
})
}
},
methods: {
close(){
let pages = getCurrentPages();
let currPage = pages[pages.length - 1];
if(this.data.isGoIndex){
wx.switchTab({url:'/pages/index/index'});
}else{
this.setData({
iShidden: true
});
if (currPage && currPage.data.iShidden != undefined){
currPage.setData({ iShidden:true});
}
}
},
get_logo_url: function () {
var that = this;
if (wx.getStorageSync('logo_url')) return this.setData({ logo_url: wx.getStorageSync('logo_url') });
getLogo().then(res=>{
wx.setStorageSync('logo_url', res.data.logo_url);
that.setData({ logo_url: res.data.logo_url });
});
},
//检测登录状态并执行自动登录
setAuthStatus() {
var that = this;
Util.chekWxLogin().then((res)=> {
let pages = getCurrentPages();
let currPage = pages[pages.length - 1];
if (currPage && currPage.data.iShidden != undefined) {
currPage.setData({ iShidden:true});
}
if (res.isLogin) {
if (!Util.checkLogin()) return Promise.reject({ authSetting: true, msg: '用户token失效', userInfo: res.userInfo});
that.triggerEvent('onLoadFun', app.globalData.userInfo);
}else{
wx.showLoading({ title: '正在登录中' });
that.setUserInfo(res.userInfo,true);
}
}).catch(res=>{
if (res.authSetting === false) {
//没有授权不会自动弹出登录框
if (that.data.isAuto === false) return;
//自动弹出授权
that.setData({ iShidden: false });
} else if (res.authSetting){
//授权后登录token失效了
that.setUserInfo(res.userInfo);
}
})
},
// 获取用户信息
getUserProfile() {
let that = this;
wx.showLoading({ title: '正在登录中' });
wx.getUserProfile({
desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
success: (res) => {
Util.getCodeLogin((code)=>{
let userInfo = res;
userInfo.code = code.code;
that.getWxUserInfo(userInfo);
})
},
fail: (err) => {
wx.hideLoading();
}
});
},
//授权
setUserInfo(userInfo,isLogin) {
let that = this;
wx.showLoading({ title: '正在登录中' });
if (isLogin){
that.getWxUserInfo(userInfo);
}else{
Util.getCodeLogin((res)=>{
Util.wxgetUserInfo().then(userInfo=>{
userInfo.code = res.code;
that.getWxUserInfo(userInfo);
}).catch(res=>{
wx.hideLoading();
});
});
}
},
getWxUserInfo: function (userInfo){
let that = this;
userInfo.spread_spid = app.globalData.spid;//获取推广人ID
userInfo.spread_code = app.globalData.code;//获取推广人分享二维码ID
login(userInfo).then(res => {
app.globalData.token = res.data.token;
app.globalData.isLog = true;
app.globalData.userInfo = res.data.userInfo;
app.globalData.expiresTime = res.data.expires_time;
wx.setStorageSync(CACHE_TOKEN, res.data.token);
wx.setStorageSync(CACHE_EXPIRES_TIME, res.data.expires_time);
wx.setStorageSync(CACHE_USERINFO, JSON.stringify(res.data.userInfo));
if (res.data.cache_key) wx.setStorage({ key: 'cache_key', data: res.data.cache_key });
//取消登录提示
wx.hideLoading();
//关闭登录弹出窗口
that.setData({ iShidden: true, errorSum: 0 });
//执行登录完成回调
that.triggerEvent('onLoadFun', app.globalData.userInfo);
}).catch((err) => {
wx.hideLoading();
that.data.errorSum++;
that.setData({ errorSum: that.data.errorSum });
if (that.data.errorSum >= that.data.errorNum) {
Util.Tips({ title: err });
} else {
that.setUserInfo(userInfo);
}
});
}
},
})
properties: {
iShidden: {
type: Boolean,
value: true,
},
//是否自动登录
isAuto: {
type: Boolean,
value: true,
},
isGoIndex: {
type: Boolean,
value: true,
},
},
data: {
cloneIner: null,
loading: false,
errorSum: 0,
errorNum: 3,
canIUseGetUserProfile: false // 判断是否为最新获取用户信息函数
},
attached() {
this.get_logo_url();
this.setAuthStatus();
if (wx.getUserProfile) {
this.setData({
canIUseGetUserProfile: true
})
}
},
methods: {
close() {
let pages = getCurrentPages();
let currPage = pages[pages.length - 1];
if (this.data.isGoIndex) {
wx.switchTab({
url: '/pages/index/index'
});
} else {
this.setData({
iShidden: true
});
if (currPage && currPage.data.iShidden != undefined) {
currPage.setData({
iShidden: true
});
}
}
},
get_logo_url: function() {
var that = this;
if (wx.getStorageSync('logo_url')) return this.setData({
logo_url: wx.getStorageSync('logo_url')
});
getLogo().then(res => {
wx.setStorageSync('logo_url', res.data.logo_url);
that.setData({
logo_url: res.data.logo_url
});
});
},
//检测登录状态并执行自动登录
setAuthStatus() {
var that = this;
Util.chekWxLogin().then((res) => {
let pages = getCurrentPages();
let currPage = pages[pages.length - 1];
if (currPage && currPage.data.iShidden != undefined) {
currPage.setData({
iShidden: true
});
}
if (res.isLogin) {
if (!Util.checkLogin()) return Promise.reject({
authSetting: true,
msg: '用户token失效',
userInfo: res.userInfo
});
that.triggerEvent('onLoadFun', app.globalData.userInfo);
} else {
wx.showLoading({
title: '正在登录中'
});
that.setUserInfo(res.userInfo, true);
}
}).catch(res => {
if (res.authSetting === false) {
//没有授权不会自动弹出登录框
if (that.data.isAuto === false) return;
//自动弹出授权
that.setData({
iShidden: false
});
} else if (res.authSetting) {
//授权后登录token失效了
that.setUserInfo(res.userInfo);
}
})
},
// 获取用户信息
getUserProfile() {
let that = this;
wx.showLoading({
title: '正在登录中'
});
wx.getUserProfile({
desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
success: (res) => {
Util.getCodeLogin((code) => {
let userInfo = res;
userInfo.code = code.code;
that.getWxUserInfo(userInfo);
})
},
fail: (err) => {
wx.hideLoading();
}
});
},
//授权
setUserInfo(userInfo, isLogin) {
let that = this;
wx.showLoading({
title: '正在登录中'
});
if (isLogin) {
that.getWxUserInfo(userInfo);
} else {
wx.hideLoading();
that.setData({
iShidden: false
});
}
},
getWxUserInfo: function(userInfo) {
let that = this;
userInfo.spread_spid = app.globalData.spid; //获取推广人ID
userInfo.spread_code = app.globalData.code; //获取推广人分享二维码ID
login(userInfo).then(res => {
app.globalData.token = res.data.token;
app.globalData.isLog = true;
app.globalData.userInfo = res.data.userInfo;
app.globalData.expiresTime = res.data.expires_time;
wx.setStorageSync(CACHE_TOKEN, res.data.token);
wx.setStorageSync(CACHE_EXPIRES_TIME, res.data.expires_time);
wx.setStorageSync(CACHE_USERINFO, JSON.stringify(res.data.userInfo));
if (res.data.cache_key) wx.setStorage({
key: 'cache_key',
data: res.data.cache_key
});
//取消登录提示
wx.hideLoading();
//关闭登录弹出窗口
that.setData({
iShidden: true,
errorSum: 0
});
//执行登录完成回调
that.triggerEvent('onLoadFun', app.globalData.userInfo);
}).catch((err) => {
wx.hideLoading();
that.data.errorSum++;
that.setData({
errorSum: that.data.errorSum
});
if (that.data.errorSum >= that.data.errorNum) {
Util.Tips({
title: err
});
} else {
that.setUserInfo(userInfo);
}
});
}
},
})

File diff suppressed because it is too large Load Diff