废话不多说,直接上代码,这个是封装的微信小程序登录操作
之前的代码
sendLogin: function() {
var e = this, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, r = "weixin";
return new Promise(function(o, i) {
t.login({
provider: r,
success: function(a) {
t.getUserInfo({
provider: r,
success: function(t) {
console.log(t)
var s = {
code: a.code,
nickName: t.userInfo.nickName,
avatarUrl: t.userInfo.avatarUrl,
gender: t.userInfo.gender,
parentid: n,
iv: t.iv,
encrypted_data: t.encryptedData,
platform: r
};
e.request("User/appLogin", s, "POST", !0, !1).then(function(t) {
1 == t.code && o(t.data);
}).catch(function(t) {
i(t);
});
}
});
}
});
});
},
修改之后的代码
sendLogin: function() {
var e = this, n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0, r = "weixin";
return new Promise(function(o, i) {
let code = '';
t.login({
success: (res) => {
code = res.code
console.log(res.code);
}
});
t.getUserProfile({
desc: '登录',
success: function(t) {
console.log(t)
var s = {
code: code,
nickName: t.userInfo.nickName,
avatarUrl: t.userInfo.avatarUrl,
gender: t.userInfo.gender,
parentid: n,
iv: t.iv,
encrypted_data: t.encryptedData,
platform: r
};
e.request("User/appLogin", s, "POST", !0, !1).then(function(t) {
1 == t.code && o(t.data);
}).catch(function(t) {
i(t);
});
}
});
});
},
其实改变的不是很多,原来的login执行成功然后往下执行getUserInfo,最后面传给后台,现在就是把login和getUserProfile拆开,login只获取code,然后getUserProfile里面把相关的参数传给后台解密即可,而getUserProfile和getUserInfo的写法基本没什么区别,就是少了一个openID,这个后台去获取,不用前台处理,这样写为了避免getUserProfile内嵌在login里面掉不起来的问题,基本上这样就可以获取到用户的正常信息了
这个是封装的东西,可以自己改一下,基本的逻辑都是可以看懂的