小程序的第一次授權(quán)發(fā)生在 app.js 的 onLaunch 方法 中
App({
onLaunch: function () {
//調(diào)用API從本地緩存中獲取數(shù)據(jù)
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 {
//調(diào)用登錄接口
wx.login({
success: function (loginCode) {
// 這里會(huì)跳出彈框,獲取用戶信息
wx.getUserInfo({
success: function (res) {// 第一次允許授權(quán)
that.globalData.userInfo = res.userInfo // 獲取用戶信息,賦給全局變量
typeof cb == "function" && cb(that.globalData.userInfo)
},
fail: function (res) {// 第一次拒絕授權(quán)
}
})
}
})
}
},
globalData: {
userInfo: null
}
})
如果拒絕授權(quán),就獲取不到userInfo,但是之后有需要使用userInfo中的信息,這時(shí)候就需要 wx.openSetting() 再次喚醒用戶授權(quán)
wx.openSetting({// 調(diào)起用戶設(shè)置
success: function (res) {
res.authSetting = {
"scope.userInfo": true,
"scope.userLocation": true
}
if (res.authSetting["scope.userInfo"]) {// 第二次同意授權(quán)
wx.getUserInfo({
success: function (res) {
// 保存用戶信息
that.globalData.userInfo = res.userInfo
}
})
} else {// 第二次拒絕授權(quán)
// 進(jìn)行處理
}
},
fail: function (res) {
}
})