修改微信信息授权
This commit is contained in:
parent
28399b4795
commit
65adba149c
|
|
@ -0,0 +1,5 @@
|
||||||
|
export default {
|
||||||
|
deptId: 1,
|
||||||
|
initPageNum: 1,
|
||||||
|
initPageSize: 5
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,114 @@
|
||||||
|
import globalData from '@/common/js/globalData.js';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
// 异步接口拦截
|
||||||
|
addInterceptor() {
|
||||||
|
uni.addInterceptor('request', {
|
||||||
|
invoke(args) {
|
||||||
|
// request 触发前拼接 url
|
||||||
|
args.url = 'http://www.opsoul.com' + args.url;
|
||||||
|
// console.log("停止触发");
|
||||||
|
// return false;
|
||||||
|
},
|
||||||
|
success(res) {
|
||||||
|
if (res.data.code !== 0) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '系统开小差啦T_T,请稍后重试',
|
||||||
|
icon: 'error'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
fail(err) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '系统开小差啦T_T,请稍后重试',
|
||||||
|
icon: 'error'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
complete(res) {
|
||||||
|
console.log('interceptor-complete', res)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
checkAndAuth() {
|
||||||
|
let _this = this;
|
||||||
|
// 通过 wx.getSetting 先查询一下用户是否授权了 "scope.userInfo" 这个 scope
|
||||||
|
wx.getSetting({
|
||||||
|
success(res) {
|
||||||
|
if (!res.authSetting['scope.userInfo']) {
|
||||||
|
// 用户授权
|
||||||
|
wx.authorize({
|
||||||
|
scope: 'scope.userInfo',
|
||||||
|
success() {
|
||||||
|
// 用户已经同意, 后续调用此接口不会弹窗询问
|
||||||
|
_this.login();
|
||||||
|
},
|
||||||
|
fail() {
|
||||||
|
// 用户已经拒绝过授权
|
||||||
|
wx.openSetting({
|
||||||
|
success(res) {
|
||||||
|
if (res['scope.userInfo']) {
|
||||||
|
_this.checkAndAuth();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
_this.login();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
async login() {
|
||||||
|
// 从缓存中获取登录信息
|
||||||
|
let userInfo = uni.getStorageSync('userProfile');
|
||||||
|
if (userInfo) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO:调用小程序服务端确认是否是授权登录过的用户
|
||||||
|
let loginRes = {
|
||||||
|
logined: false,
|
||||||
|
userInfo: {}
|
||||||
|
};
|
||||||
|
// 未登录过的获取微信用户信息
|
||||||
|
if (!loginRes.logined) {
|
||||||
|
userInfo = await wx.getUserProfile({
|
||||||
|
desc: '用于小程序登录'
|
||||||
|
});
|
||||||
|
// 获取微信登录凭证
|
||||||
|
const wxLoginRes = await wx.login();
|
||||||
|
console.log(wxLoginRes)
|
||||||
|
// 再次请求小程序服务端存储用户,服务端添加附加用户信息后返回
|
||||||
|
loginRes = {
|
||||||
|
logined: true,
|
||||||
|
userInfo: {
|
||||||
|
...userInfo,
|
||||||
|
userId: 1,
|
||||||
|
wxLoginCode: wxLoginRes.code
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const wxAuthRes = await uni.request({
|
||||||
|
url: '/wx/auth',
|
||||||
|
header: {
|
||||||
|
code: wxLoginRes.code
|
||||||
|
}
|
||||||
|
})
|
||||||
|
console.log(wxAuthRes)
|
||||||
|
loginRes.userInfo.openId = wxAuthRes[1].data.data.openid;
|
||||||
|
}
|
||||||
|
userInfo = loginRes.userInfo;
|
||||||
|
|
||||||
|
if (!userInfo) {
|
||||||
|
uni.showToast({
|
||||||
|
icon: 'error',
|
||||||
|
title: '微信用户信息获取失败,请退出小程序重试'
|
||||||
|
})
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
// 页面存储用户登录有效信息,以便其他页面调用
|
||||||
|
uni.setStorageSync('userProfile', userInfo);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
3
main.js
3
main.js
|
|
@ -8,6 +8,7 @@ import globalFun from './common/js/glogalFun.js';
|
||||||
import validate from './common/js/validate.js';
|
import validate from './common/js/validate.js';
|
||||||
import dateUtil from './common/js/dateUtil.js';
|
import dateUtil from './common/js/dateUtil.js';
|
||||||
import commonFun from './common/js/commonFun.js';
|
import commonFun from './common/js/commonFun.js';
|
||||||
|
import request from './common/js/request.js';
|
||||||
|
|
||||||
Vue.component('cu-custom', CuCustom)
|
Vue.component('cu-custom', CuCustom)
|
||||||
Vue.component('confirm-modal', ConfirmModal);
|
Vue.component('confirm-modal', ConfirmModal);
|
||||||
|
|
@ -17,6 +18,7 @@ const data = type => {
|
||||||
resolve(Data[type]);
|
resolve(Data[type]);
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
request.addInterceptor();
|
||||||
Vue.prototype.$api = {
|
Vue.prototype.$api = {
|
||||||
data
|
data
|
||||||
}
|
}
|
||||||
|
|
@ -24,6 +26,7 @@ Vue.prototype.$globalFun = globalFun;
|
||||||
Vue.prototype.$validate = validate;
|
Vue.prototype.$validate = validate;
|
||||||
Vue.prototype.$dateUtil = dateUtil;
|
Vue.prototype.$dateUtil = dateUtil;
|
||||||
Vue.prototype.$commonFun = commonFun;
|
Vue.prototype.$commonFun = commonFun;
|
||||||
|
Vue.prototype.$request = request;
|
||||||
|
|
||||||
Vue.config.productionTip = false
|
Vue.config.productionTip = false
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -168,6 +168,7 @@
|
||||||
methods: {
|
methods: {
|
||||||
async loadData() {
|
async loadData() {
|
||||||
this.curUserInfo = uni.getStorageSync('userProfile');
|
this.curUserInfo = uni.getStorageSync('userProfile');
|
||||||
|
console.log(this.curUserInfo)
|
||||||
this.isAuthWxLoginModal = this.curUserInfo ? false : true;
|
this.isAuthWxLoginModal = this.curUserInfo ? false : true;
|
||||||
if (!this.isAuthWxLoginModal) {
|
if (!this.isAuthWxLoginModal) {
|
||||||
this.myInfo = await this.$api.data('myInfo');
|
this.myInfo = await this.$api.data('myInfo');
|
||||||
|
|
@ -201,7 +202,7 @@
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
authWxLogin() {
|
authWxLogin() {
|
||||||
this.$commonFun.login().then(res => {
|
this.$request.login().then(res => {
|
||||||
if (res) {
|
if (res) {
|
||||||
this.loadData();
|
this.loadData();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue