鍍金池/ 問答/HTML/ 在wx.getSetting中調(diào)用wx.getUserInfo方法時在授權(quán)過的條

在wx.getSetting中調(diào)用wx.getUserInfo方法時在授權(quán)過的條件下沒有彈窗,未授權(quán)的條件下有彈窗,為什么?

 wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          console.log('已經(jīng)授權(quán)')
          // 已經(jīng)授權(quán),可以直接調(diào)用 getUserInfo 
          wx.getUserInfo({
            success: res => {
              console.log('app.js執(zhí)行 getUserInfo')
              // 可以將 res 發(fā)送給后臺解碼出 unionId
              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是網(wǎng)絡(luò)請求,可能會在 Page.onLoad 之后才返回
              // 所以此處加入 callback 以防止這種情況
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }else{
          wx.getUserInfo({
            success: res => {
              console.log('app.js執(zhí)行 getUserInfo2')
              // 可以將 res 發(fā)送給后臺解碼出 unionId
              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是網(wǎng)絡(luò)請求,可能會在 Page.onLoad 之后才返回
              // 所以此處加入 callback 以防止這種情況
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
      }
    })

1:上面的代碼中,第一次未授權(quán)時會走入else分支,此時會有彈窗,當(dāng)我不清楚緩存,只是重新編譯一下時再次運(yùn)行時會走入if()分支也就是已經(jīng)授權(quán),但是緊接著下面也執(zhí)行了wx.getUserInfo,但是沒有彈窗,這是為什么?

回答
編輯回答
尛曖昧

這沒有為什么,只是微信設(shè)計(jì)的原因:
如果用戶之前已經(jīng)授權(quán),在一定時間內(nèi)重復(fù)調(diào)用接口,微信不會重復(fù)彈窗提醒用戶授權(quán)。

甚至官方也給出出了調(diào)用微信的不同接口需要不同的授權(quán)彈窗,有可能會導(dǎo)致頻繁騷擾的解決方案:
https://mp.weixin.qq.com/debu...

2018年7月4日 16:28