You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
203 lines
7.0 KiB
203 lines
7.0 KiB
import store from '@/store';
|
|
// APP--授权登录
|
|
// type授权登录平台 'qq'、'weixin'、'apple'
|
|
export const loginApp = (type, successCallback, errorCallback) => {
|
|
uni.login({
|
|
provider: type,
|
|
success: function (loginRes) {
|
|
// 获取用户信息
|
|
uni.getUserInfo({
|
|
provider: type,
|
|
success: function (infoRes) {
|
|
let data = {}
|
|
if (type == 'qq') {
|
|
data = {
|
|
'openid': loginRes.authResult.openid,
|
|
'nickname': infoRes.userInfo.nickname,
|
|
'gender': infoRes.userInfo.gender,
|
|
'province': infoRes.userInfo.province,
|
|
'city': infoRes.userInfo.city,
|
|
'figureurl': infoRes.userInfo.figureurl_qq
|
|
}
|
|
} else if (type == 'weixin') {
|
|
data = {
|
|
'openid': loginRes.authResult.openid,
|
|
'nickname': infoRes.userInfo.nickName,
|
|
'sex': infoRes.userInfo.gender,
|
|
'province': infoRes.userInfo.province,
|
|
'city': infoRes.userInfo.city,
|
|
'country': infoRes.userInfo.country,
|
|
'headimgurl': infoRes.userInfo.avatarUrl,
|
|
'unionid': loginRes.authResult.unionid
|
|
}
|
|
} else if (type == 'apple') {
|
|
data = {
|
|
verifyType: 'password',
|
|
personalPhone: '13888888888',
|
|
personalPhoneCountryCode: '86',
|
|
password: '123456'
|
|
}
|
|
}
|
|
successCallback && successCallback(data)
|
|
}
|
|
});
|
|
}, fail: function (err) {
|
|
console.log(res, "失败")
|
|
errorCallback && errorCallback(res)
|
|
}
|
|
});
|
|
}
|
|
// 微信/支付宝小程序---手机号授权登录时使用
|
|
// info: uni.login获取的参数
|
|
export const getPhoneInfo = (info, successCallback, errCallback) => {
|
|
let httpData = {}
|
|
// #ifdef MP-WEIXIN
|
|
httpData = {
|
|
code: info.code, //小程序code
|
|
iv: info.iv, //小程序加密算法的初始向量
|
|
encryptedData: info.encryptedData, //包括敏感数据在内的完整用户信息的加密数据
|
|
};
|
|
// #endif
|
|
// #ifdef MP-ALIPAY
|
|
httpData = {
|
|
code: '', //小程序code
|
|
iv: '', //小程序加密算法的初始向量
|
|
encryptedData: info, //包括敏感数据在内的完整用户信息的加密数据
|
|
};
|
|
// #endif
|
|
|
|
// 此时需要您的接口返回个人信息
|
|
// uni.$u.http.post('您的接口', httpData).then(res => {
|
|
var loginInfo = {
|
|
// userId: res.id,
|
|
// sessionId: res.sessionId,
|
|
// phoneNum: res.phoneNum,
|
|
// userName: res.userName,
|
|
// openId: res.openId,
|
|
};
|
|
successCallback && successCallback(loginInfo)
|
|
// }, err => {
|
|
// errCallback && errCallback(err)
|
|
// });
|
|
}
|
|
// 微信/支付宝小程序---通用授权个人信息登录
|
|
export const getUserInfo = (successCallback, errorCallback) => {
|
|
uni.showLoading({
|
|
title: '正在申请授权',
|
|
});
|
|
// #ifdef MP-WEIXIN
|
|
uni.getUserProfile({
|
|
desc: '用于完善会员资料',
|
|
success: function (res) {
|
|
uni.hideLoading()
|
|
var offUserInfo = res.userInfo
|
|
successCallback && successCallback(offUserInfo)
|
|
}, fail: (res) => {
|
|
uni.hideLoading()
|
|
errorCallback && errorCallback(res)
|
|
}
|
|
})
|
|
// #endif
|
|
// #ifdef MP-ALIPAY
|
|
uni.getOpenUserInfo({
|
|
success: (res) => {
|
|
uni.hideLoading()
|
|
var offUserInfo = JSON.parse(res.response).response // 以下方的报文格式解析两层 response
|
|
offUserInfo.avatarUrl = offUserInfo.avatar
|
|
successCallback && successCallback(offUserInfo)
|
|
}, fail: (res) => {
|
|
uni.hideLoading()
|
|
console.log(res, "失败")
|
|
errorCallback && errorCallback(res)
|
|
}
|
|
})
|
|
// #endif
|
|
}
|
|
|
|
let lock = false
|
|
let promiseResult = []
|
|
// 获取token
|
|
export const getToken = () => {
|
|
return new Promise((resolve, reject) => {
|
|
promiseResult.push({
|
|
resolve,
|
|
reject
|
|
})
|
|
if (!lock) {
|
|
lock = true
|
|
// uni.login({
|
|
// success(res){
|
|
var httpData = {
|
|
username: 'ceshi',
|
|
password: '111111',
|
|
}
|
|
uni.$u.http.post('/api/Tokensys/login', httpData, { custom: { isFactory: false } }).then(res => {
|
|
if (res.code == 1) {
|
|
let userInfo = {
|
|
token: res.token,//token用于判断是否登录
|
|
}
|
|
console.log(res.token, 'res.token')
|
|
store.commit('setUserInfo', userInfo)
|
|
console.log(store.state.userInfo.token, 'getToken-token')
|
|
// uni.$emit("loginCallback") //全局登录监听回调方法
|
|
}
|
|
while (promiseResult.length) {
|
|
// p1.resolve(res.data)
|
|
promiseResult.shift().resolve(res)
|
|
}
|
|
lock = false
|
|
}).catch(err => {
|
|
while (promiseResult.length) {
|
|
// p1.reject(err)
|
|
promiseResult.shift().reject(err)
|
|
}
|
|
lock = false
|
|
})
|
|
// }
|
|
// })
|
|
}
|
|
})
|
|
}
|
|
|
|
// 获取当前路径
|
|
export const getCurrentRouter = (callback) => {
|
|
let routes = getCurrentPages() // 获取当前打开过的页面路由数组
|
|
let curRoute = routes[routes.length - 1].route
|
|
return curRoute
|
|
}
|
|
|
|
var throttleLogin = true
|
|
//判断是否登录(所有端)
|
|
export const judgeLogin = (callback) => {
|
|
console.log('judgeLogin', store)
|
|
const storeUserInfo = uni.getStorageSync('userInfo')
|
|
if (!storeUserInfo) {
|
|
if (throttleLogin) {
|
|
throttleLogin = false
|
|
setTimeout(() => {
|
|
throttleLogin = true //节流
|
|
}, 1000)
|
|
store.commit('setCurrentRouter', getCurrentRouter()) //获取当前路径
|
|
// #ifdef MP
|
|
store.commit('setLoginPopupShow', true);
|
|
// #endif
|
|
// #ifdef APP-PLUS
|
|
uni.$showModal({
|
|
title: "登录提示",
|
|
confirmVal: '去登录',
|
|
cancelVal: '再逛会',
|
|
content: '此时此刻需要您登录喔~',
|
|
}).then(res => {
|
|
uni.navigateTo({
|
|
url: "/pages/user/login"
|
|
});
|
|
}).catch(res => { })
|
|
// #endif
|
|
|
|
} else {
|
|
// uni.$u.toast('您点击的太频繁了')
|
|
}
|
|
} else {
|
|
callback && callback()
|
|
}
|
|
} |