微信小程序?qū)τ谟脩粜畔@取進(jìn)行了接口調(diào)整。調(diào)用wx.getUserInfo(Object object)不會(huì)再由彈窗授權(quán)提示。在已授權(quán)時(shí),可以直接獲取用戶信息;否則則直接進(jìn)入fail回調(diào)函數(shù)。
用戶的授權(quán)狀態(tài)可以用wx.getSetting()接口的請(qǐng)求的結(jié)果
res.authSetting['scope.userInfo']來(lái)判斷。
// 查看是否授權(quán)
wx.getSetting({
success(res) {
if (res.authSetting['scope.userInfo']) {
// 已經(jīng)授權(quán),可以直接調(diào)用 getUserInfo 獲取頭像昵稱
wx.getUserInfo({
success(res) {
console.log(res.userInfo)
}
})
}
}
})
那么在接口調(diào)整后,再進(jìn)行授權(quán)登錄則需要通過(guò)open-data來(lái)實(shí)現(xiàn)。
wxml:
<button
wx:if="{{canIUse}}"
open-type="getUserInfo"
bindgetuserinfo="bindGetUserInfo"
>授權(quán)登錄
</button>
js:
data: {
canIUse: wx.canIUse('button.open-type.getUserInfo')//當(dāng)前微信版本是否支持button.open-data操作
},
bindGetUserInfo(e) {
console.log(e.detail.userInfo)
}
具體實(shí)現(xiàn)
- 在“彈幕彈幕”項(xiàng)目中,我們?cè)谥黜?yè)判斷用戶是否已經(jīng)授權(quán),如果授權(quán),直接調(diào)用
wx.getUserInfo()獲取用戶信息 - 如果未授權(quán),則在掃碼成功后進(jìn)入授權(quán)頁(yè),引導(dǎo)用戶授權(quán)
- 如果已授權(quán),直接轉(zhuǎn)到主頁(yè)
注:如果用戶微信版本不支持open-data,需要提示用戶升級(jí)。這次接口的調(diào)整實(shí)際上使得按一次彈窗中的授權(quán)按鈕即可授權(quán)的操作變成了需要按兩次,并且需要額外設(shè)計(jì)授權(quán)頁(yè)面或者在主頁(yè)先進(jìn)行一次彈窗引導(dǎo)用戶授權(quán)。實(shí)際上更加繁瑣。