小程序的第一次授权发生在 app.js 的 onLaunch 方法 中
App({
onLaunch: function () {
//调用API从本地缓存中获取数据
var logs = wx.getStorageSync('logs') || []
logs.unshift(Date.now())
wx.setStorageSync('logs', logs)
},
getUserInfo: function (cb) {
var that = this
if (this.globalData.userInfo) {
typeof cb == "function" && cb(this.globalData.userInfo)
} else {
//调用登录接口
wx.login({
success: function (loginCode) {
// 这里会跳出弹框,获取用户信息
wx.getUserInfo({
success: function (res) {// 第一次允许授权
that.globalData.userInfo = res.userInfo // 获取用户信息,赋给全局变量
typeof cb == "function" && cb(that.globalData.userInfo)
},
fail: function (res) {// 第一次拒绝授权
}
})
}
})
}
},
globalData: {
userInfo: null
}
})
如果拒绝授权,就获取不到userInfo,但是之后有需要使用userInfo中的信息,这时候就需要 wx.openSetting() 再次唤醒用户授权
wx.openSetting({// 调起用户设置
success: function (res) {
res.authSetting = {
"scope.userInfo": true,
"scope.userLocation": true
}
if (res.authSetting["scope.userInfo"]) {// 第二次同意授权
wx.getUserInfo({
success: function (res) {
// 保存用户信息
that.globalData.userInfo = res.userInfo
}
})
} else {// 第二次拒绝授权
// 进行处理
}
},
fail: function (res) {
}
})