快速切換tab致使wx.getSetting拿不到已經受權的信息小程序
咱們的受權流程是:在用戶進入小程序的時候就讓用戶受權用戶基本信息。雖然小程序官方建議在須要用戶的暱稱、頭像等信息的時候再去讓用戶受權。微信
因爲小程序將受權用戶基本信息改爲了只能經過button調用,因此在這次小程序的開發中,咱們自定義了一個受權彈框(圖一),經過彈框上的【點擊受權】按鈕去調用微信受權彈框(圖二)。ide
自定義受權彈框:post
微信受權彈框:spa
方案1:在tabbar頁和具備分享功能的頁面的onShow中調用wx.getSetting判斷是否已經受權,若是已經受權,隱藏自定義受權彈框;不然,顯示自定義受權彈框。代碼以下:code
存在的問題:在已經受權用戶信息的狀況下快速切換tab會出現wx.getSetting返回的res.authSetting['scope.userInfo']爲空的狀況,從而致使自定義受權彈框的顯示。但此時點擊自定義受權中的【點擊受權】按鈕又不能調起微信受權彈框,由於以前已經受權過了。猜想是由於頻繁調用wx.getSetting的緣由。blog
方案2:在tabbar頁的onLoad中調用wx.getSetting,這樣就避免了切換tabbar的時候頻繁調用wx.getSetting。而後將是否受權的信息(authInfoDlg)存在全局,在tabbar頁的onShow中根據authInfoDlg肯定是否顯示自定義受權彈框。代碼以下:token