1、使用点击事件调用uni.getUserProfile()获取用户信息
每次请求都会弹出授权窗口,用户同意后返回 userInfo
login(){
// 获取code
uni.login({
provider: 'weixin',
success: function(res) {
console.log(res)
},
})
//不能写在uni,login()中
//如果写在uni.login()中,调不到这个api
uni.getUserProfile({
desc:'登录',
success:(res)=>{
console.log(res.userInfo)
}
})
}
2、使用open-data组件直接展示
使用open-data组件直接展示用户信息,跳过弹窗一步,不用用户点击
<view>
<open-data type="userAvatarUrl"></open-data> //用户头像
<open-data type="userNickName"></open-data> //用户名称
</view>
<style>
//头像设置为圆的
.avatar {
width:150rpx;
height:150rpx;
border-radius: 50%;
overflow:hidden
}
</style>
更多用户信息:
3、解决每次调用uni.getUserProfile()都会弹出授权框
解决思路:
1、在第一次登陆的时候,将用户信息存在本地;
2、下次登陆的时候,先判断本地是否存在用户信息;
3、若有:直接登录;若没有,调用uni.getUserProfile(),然后再登录
// 登录(在vuex中记录登陆状态)
login(state) {
let userInfoLogin = uni.getStorageSync('userInfoLogin')
// 获取code
uni.login({
provider: 'weixin',
success: function(res) {
state.code = res.code //获取code
if(userInfoLogin.nickname != undefined){
//接下来 获取openid,登录
}
},
})
if(userInfoLogin.nickname == undefined){
uni.getUserProfile({
desc:'登录',
success: function(infoRes) {
uni.setStorageSync('userInfoLogin',infoRes)
//接下来 获取openid,登录
}
})
}
},