首先在button 上加上open-type=“getUserInfo” 来调用模拟授权框
<view >
<button class="loginWeChatBtn" open-type="getUserInfo" @getuserinfo="wechatLogin">微信一键登录</button>
</view>
在methods方法中获取用户名 获取性别 获取头像 获取js_code去换取后台返回的openID
wechatLogin(){
var that=this
// 获取用户名 获取性别 获取头像 获取js_code去换取后台返回的openID
uni.login({
provider: 'weixin',
success: function (loginRes) {
let js_code=loginRes.code;//js_code可以给后台获取unionID或openID作为用户标识
// 获取用户信息
uni.getUserInfo({
provider: 'weixin',
success: function (infoRes) {
//infoRes里面有用户信息需要的话可以取一下
let username=infoRes.userInfo.nickName;//用户名
let gender=infoRes.userInfo.gender;//用户性别
let avatarUrl=infoRes.userInfo.avatarUrl;//头像
//判断是否授权
uni.getSetting({
success(res) {
console.log("授权:",res);
if (!res.authSetting['scope.userInfo']) {
//这里调用授权
console.log("当前未授权");
} else {
//用户已经授权过了
console.log("当前已授权");
// 弹出正在登录的弹框
uni.showLoading({
mask:true,
title: '正在登录···',
complete:()=>{
}
});
// 判断已授权调取接口并获取openId
that.$apiReq.req({
// 创建对象
url: '/ui/wxutil/loginByWx', // 示例请求路径
method:"post",
data : {
'code':js_code,
},
success: (res) => {
//需要openId 可以在这里打印出来
if(res.data.code==202){
// 登录成功后判断是否是第一次注册 如果是弹出选择身份页面
uni.navigateTo({
url: './registeredIdentity/registeredIdentity'
success: res => {
},
fail: () => {
},
complete: () => {
}
});
}else if(res.data.code==201){
uni.switchTab({
url: '../homePage/homePage',
success: res => {
},
fail: () => {
},
complete: () => {
}
});
}
},
})
}
}
})
},
fail:function(res){
}
})
},
fail:function(res){
}
})
},