用户登录需要拿到以下参数,因为getUserInfo已经不再有弹出层了,使用我们改用getUserProfile获取数据
1.点击登录按钮获取微信用户的基本信息:
<button type="default" v-on:click="dianji()">一键登录</button>
2.在methods节点中声明getUserInfo事件处理函数
methods:{
dianji(){
uni.getUserProfile({
desc: '用于完善用户资料',
success(e) {
console.log(e.userInfo);
},
fail() {
uni.showToast({
icon:null,
title:'您取消了登录授权'
})
}
})
}
}
3.获取code参数:
const [err,res] = await uni.login().catch(err=>err);
if(res.errMsg !== 'login:ok'){
return uni.showToast({
title:'登录失败!'
})
}
console.log(res.code);
4.把5个参数放在data的一个对象当中
data() {
return {
query:{
code:'',
encryptedData:'',
iv:'',
signature:''
},
userInfo:{
}
};
},
methods:{
dianji(){
var that = this;
uni.getUserProfile({
desc: '用于完善用户资料',
success(e) {
//保存参数信息
that.get();
that.query.encryptedData = e.encryptedData;
that.query.iv = e.iv;
that.query.signature = e.signature;
that.query.rawData = e.rawData;
//保存用户信息
that.userInfo = e.userInfo;
},
fail() {
uni.showToast({
icon:null,
title:'您取消了登录授权'
})
},
});
},
async get(){
const [err,res] = await uni.login().catch(err=>err);
if(err || res.errMsg !== 'login:ok'){
return uni.showToast({
title:'登录失败!'
})
}
console.log(res.code);
this.query.code = res.code;
}
}
5个参数已经全部保存在data下的query对象当中
5.将code传给后台处理:
methods:{
dianji(){
var that = this;
uni.getUserProfile({
desc: '用于完善用户资料',
success(e) {
//保存参数信息
that.get().then(res=>{
that.query.encryptedData = e.encryptedData;
that.query.iv = e.iv;
that.query.signature = e.signature;
that.query.rawData = e.rawData;
//保存用户信息
that.userInfo = e.userInfo;
console.log('发送请求');
uni.request({
url:'http://localhost:3000/test?code='+that.query.code,
method:'GET',
success(res) {
console.log(res);
}
})
})
},
fail() {
uni.showToast({
icon:null,
title:'您取消了登录授权'
})
},
});
},
async get(){
const [err,res] = await uni.login().catch(err=>err);
if(err || res.errMsg !== 'login:ok'){
return uni.showToast({
title:'登录失败!'
})
}
this.query.code = res.code;
console.log('code'+this.query.code);
}
}