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,但是没有弹窗,这是为什么?
这没有为什么,只是微信设计的原因:
如果用户之前已经授权,在一定时间内重复调用接口,微信不会重复弹窗提醒用户授权。
甚至官方也给出出了调用微信的不同接口需要不同的授权弹窗,有可能会导致频繁骚扰的解决方案:
https://mp.weixin.qq.com/debu...