//判斷用戶授權(quán)
wx.getSetting({
success : (res) => {
if(res.authSetting['scope.userInfo']){
wx.getUserInfo({
success : (res) =>{
this.onLoginSuccess({
detail : res.userInfo
})
}
})
}else{
this.setData({
modalShow : true
})
}
}
})
//設(shè)置授權(quán)按鈕
<view slot = "modal-content">
<button class="login"
open-type="getUserInfo" bindgetuserinfo="onGotUserInfo">獲取微信授權(quán)信息</button>
</view>
//授權(quán)方法
methods: {
onGotUserInfo(event){
console.log(event)
const userInfo = event.detail.userInfo
//允許授權(quán)
if (userInfo){
this.setData({
modalShow:false
})
this.triggerEvent('loginSuccess', userInfo)
}else{
//授權(quán)失敗
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:'授權(quán)失敗'
})
},
//具名插槽
----------------------------------------------------------
微信小程序wx.login()、wx.getSetting、wx.getUserInfo的區(qū)別和聯(lián)系
1、wx.login
前端使用wx.login是獲取登錄憑證(code),將code發(fā)送給后臺(tái),后臺(tái)向微信發(fā)送請(qǐng)求獲取用戶的唯一標(biāo)識(shí)(openid)及本次登錄的會(huì)話密鑰(session_key),然后后臺(tái)傳回前臺(tái)自定義的登錄狀態(tài),以及自定義的用戶唯一標(biāo)識(shí)
2、wx.geUserInfo
wx.getuserinfo是為了獲取用戶的相關(guān)信息
3、wx.getSetting
wx.getsetting是獲取用戶的當(dāng)前設(shè)置。返回值中只會(huì)出現(xiàn)小程序已經(jīng)向用戶請(qǐng)求過的權(quán)限
4、關(guān)系
所以三者之間的邏輯如下:
wx.login是用戶進(jìn)入app就要調(diào)用的
wx.getusrinfo是需要獲取用戶信息時(shí)調(diào)用的(當(dāng)然如果你一開始就想要用戶的信息也可以一開始就調(diào)用),且使用時(shí)需要配合wx.getsetting來使用:
使用wx.getsetting來判斷用戶是否已經(jīng)授權(quán)你的小程序獲取用戶的信息,
如果已經(jīng)授權(quán)的話,直接使用wx.getUserinfo來獲取用戶信息
如果沒有授權(quán),需要使用一個(gè)按鈕來獲取用戶授權(quán)
<button open-type="getUserInfo" bindgetuserinfo="onGotUserInfo" >獲取用戶信息</button>