有三个tab页:home、product、 center。每个tab页的onShow都有下面这段代码
onShow: function () { // 授权用户信息 wx.getSetting({ success: res => { if (res.authSetting[ 'scope.userInfo' ]) { // 已经授权用户信息,不再弹出自定义授权弹框 this .setData({ authInfoDlg: false }) } else { // 没有授权,弹出自定义授权弹框 this .setData({ authInfoDlg: true }) } } }) } |
authInfoDlg 控制一个自定义授权弹框,下面是这个弹框的部分代码。
<button class = 'auth-dlg-btn btn-solid-org' open-type= "getUserInfo" lang= 'zh_CN' bindgetuserinfo= "_getUserInfo" >点击授权</button> _getUserInfo (e) { if (e.detail.userInfo) { console.log(e) // 关闭自定义授权弹框 this .setData({ authInfoDlg: false }) // 保存unionId let { rawData: raw_data, signature, encryptedData: encrypted_data, iv } = e.detail wx.$ajax( 'user/saveUserUnionId' , { raw_data, signature, encrypted_data, iv }) if ( this .authSuccess) { this .authSuccess(); } } } |
当进入到首页时,弹出自定义
授权弹框(图一),点击授权,调起微信用户信息授权弹框(图二),点击允许。授权之后,除非手动清除授权信息,这个自定义授权弹框不该再出现。 但是,当我快速切换tab,这个自定义授权弹框居然会出现,而且,授权信息为空(见下图),这是为何???
这个问题我们也遇到了,用的是官方推荐的代码:
wx.getSetting({
success: function (res) {
console.log(res)
if (res.authSetting[ 'scope.userInfo' ]) {
that.setData({
isauthorizationShow: true
})
} else {
that.setData({
isauthorizationShow: false
})
}
}
})
自己做了一个授权的弹窗,然后判断用户是否授权过,未授权就显示,
但是问题就是明明授权了,但是过一会后(未退出小程序),在其他页面突然弹出了自己做的授权框,
退出从进就好了,
希望官方尽快给一个回复~