login.js
4.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
import store from "@/store";
import { h5Login } from "@/config/h5Utils";
// 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
};
//判断是否登录(所有端)
export const judgeLogin = (callback) => {
let storeUserInfo = store.state.userInfo;
if (!storeUserInfo.userId) {
// nvue页面读取不到vuex里面数据,将取缓存
storeUserInfo = uni.getStorageSync("userInfo");
}
if (!storeUserInfo.isToken) {
// #ifdef MP
return uni.$u.toast("请进行账号绑定");
// #endif
// #ifdef H5
h5Login();
// #endif
} else {
callback();
}
};