在wx.getSetting中调用wx.getUserInfo方法时在授权过的条件下没有弹窗,未授权的条件下有弹窗,为什么?

 wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          console.log('已经授权')
          // 已经授权,可以直接调用 getUserInfo 
          wx.getUserInfo({
            success: res => {
              console.log('app.js执行 getUserInfo')
              // 可以将 res 发送给后台解码出 unionId
              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }else{
          wx.getUserInfo({
            success: res => {
              console.log('app.js执行 getUserInfo2')
              // 可以将 res 发送给后台解码出 unionId
              this.globalData.userInfo = res.userInfo

              // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
              // 所以此处加入 callback 以防止这种情况
              if (this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res)
              }
            }
          })
        }
      }
    })

1:上面的代码中,第一次未授权时会走入else分支,此时会有弹窗,当我不清楚缓存,只是重新编译一下时再次运行时会走入if()分支也就是已经授权,但是紧接着下面也执行了wx.getUserInfo,但是没有弹窗,这是为什么?

阅读 5.3k
1 个回答

这没有为什么,只是微信设计的原因:
如果用户之前已经授权,在一定时间内重复调用接口,微信不会重复弹窗提醒用户授权。

甚至官方也给出出了调用微信的不同接口需要不同的授权弹窗,有可能会导致频繁骚扰的解决方案:
https://mp.weixin.qq.com/debu...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题