1. extract common onShow login check to dedicated method redirectTologinOnShowLifecycle 2. add fallback callback for login failure to navigate back on wechat mini program 3. update all page login redirect calls to use the new unified method 4. add debug logs for redirect and auth flow tracing
113 lines
2.5 KiB
JavaScript
113 lines
2.5 KiB
JavaScript
export default {
|
|
data() {
|
|
return {
|
|
authInfo: {}
|
|
}
|
|
},
|
|
methods: {
|
|
/**
|
|
* 获取用户登录凭证code
|
|
*/
|
|
getCode(callback, fallbackFunc) {
|
|
console.log(`-----> auth.js getCode`)
|
|
// 微信小程序
|
|
// #ifdef MP-WEIXIN
|
|
console.log(`微信小程序登录`)
|
|
uni.login({
|
|
provider: 'weixin',
|
|
timeout: 3000,
|
|
success: res => {
|
|
if (res.code) {
|
|
this.$api.sendRequest({
|
|
url: '/weapp/api/weapp/authcodetoopenid',
|
|
data: {
|
|
code: res.code
|
|
},
|
|
success: res => {
|
|
if (res.code >= 0) {
|
|
if (res.data.openid) this.authInfo.weapp_openid = res.data
|
|
.openid;
|
|
if (res.data.unionid) this.authInfo.wx_unionid = res.data
|
|
.unionid;
|
|
typeof callback == 'function' && callback(this.authInfo);
|
|
} else {
|
|
fallbackFunc && fallbackFunc(res);
|
|
this.$util.showToast({
|
|
title: res.message ? res.message : '小程序配置错误'
|
|
});
|
|
}
|
|
}
|
|
})
|
|
} else {
|
|
fallbackFunc && fallbackFunc(res);
|
|
}
|
|
},
|
|
fail: (res) => {
|
|
// #ifdef MP-WEIXIN
|
|
let scene = wx.getLaunchOptionsSync().scene;
|
|
if ([1154, 1155].indexOf(scene) == -1) {
|
|
this.$util.showToast({
|
|
title: res.errMsg
|
|
});
|
|
}
|
|
// #endif
|
|
fallbackFunc && fallbackFunc(res);
|
|
}
|
|
})
|
|
// #endif
|
|
|
|
// #ifdef MP-ALIPAY
|
|
uni.login({
|
|
timeout: 3000,
|
|
success: res => {
|
|
if (res.code) {
|
|
this.$api.sendRequest({
|
|
url: '/aliapp/api/aliapp/authcodetouserid',
|
|
data: {
|
|
code: res.code
|
|
},
|
|
success: res => {
|
|
if (res.code >= 0) {
|
|
if (res.data.user_id) this.authInfo.ali_openid = res.data
|
|
.user_id;
|
|
typeof callback == 'function' && callback(this.authInfo);
|
|
} else {
|
|
fallbackFunc && fallbackFunc(res);
|
|
this.$util.showToast({
|
|
title: res.message ? res.message : '小程序配置错误'
|
|
});
|
|
}
|
|
}
|
|
})
|
|
}
|
|
},
|
|
fail: (err) => {
|
|
this.$util.showToast({
|
|
title: res.errMsg
|
|
});
|
|
}
|
|
})
|
|
// #endif
|
|
|
|
// #ifdef H5
|
|
if (this.$util.isWeiXin()) {
|
|
this.$api.sendRequest({
|
|
url: '/wechat/api/wechat/authcode',
|
|
data: {
|
|
redirect_url: location.href,
|
|
scopes: 'snsapi_userinfo'
|
|
},
|
|
success: res => {
|
|
if (res.code >= 0) {
|
|
location.href = res.data;
|
|
}
|
|
},
|
|
fail: err => {
|
|
fallbackFunc && fallbackFunc(err);
|
|
}
|
|
});
|
|
}
|
|
// #endif
|
|
}
|
|
}
|
|
} |