//判断用户授权
wx.getSetting({
success : (res) => {
if(res.authSetting['scope.userInfo']){
wx.getUserInfo({
success : (res) =>{
this.onLoginSuccess({
detail : res.userInfo
})
}
})
}else{
this.setData({
modalShow : true
})
}
}
})
//设置授权按钮
<view slot = "modal-content">
<button class="login"
open-type="getUserInfo" bindgetuserinfo="onGotUserInfo">获取微信授权信息</button>
</view>
//授权方法
methods: {
onGotUserInfo(event){
console.log(event)
const userInfo = event.detail.userInfo
//允许授权
if (userInfo){
this.setData({
modalShow:false
})
this.triggerEvent('loginSuccess', userInfo)
}else{
//授权失败
this.triggerEvent('loginFail')
}
}
}
})
onLoginSuccess(event){
const detail = event.detail
wx.navigateTo({
url: `../blog-edit/blog-edit?nickName=${detail.nickName}&avatarUrl=${detail.avatarUrl}`,
})
},
onLoginFail(){
wx.showModal({
title:'授权失败'
})
},
//具名插槽
----------------------------------------------------------
微信小程序wx.login()、wx.getSetting、wx.getUserInfo的区别和联系
1、wx.login
前端使用wx.login是获取登录凭证(code),将code发送给后台,后台向微信发送请求获取用户的唯一标识(openid)及本次登录的会话密钥(session_key),然后后台传回前台自定义的登录状态,以及自定义的用户唯一标识
2、wx.geUserInfo
wx.getuserinfo是为了获取用户的相关信息
3、wx.getSetting
wx.getsetting是获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限
4、关系
所以三者之间的逻辑如下:
wx.login是用户进入app就要调用的
wx.getusrinfo是需要获取用户信息时调用的(当然如果你一开始就想要用户的信息也可以一开始就调用),且使用时需要配合wx.getsetting来使用:
使用wx.getsetting来判断用户是否已经授权你的小程序获取用户的信息,
如果已经授权的话,直接使用wx.getUserinfo来获取用户信息
如果没有授权,需要使用一个按钮来获取用户授权
<button open-type="getUserInfo" bindgetuserinfo="onGotUserInfo" >获取用户信息</button>