本次代码更新了小程序获取用户信息方式,详见小程序官方通知:《小程序登录、用户信息相关接口调整说明》
基础库 2.10.4 开始支持,但经测试发现2.10.4后的很多版本目前暂时还不支持新的API,所以建议大家把基础库的版本调整成最新版
该帖子中使用的调试基础库与开发工具均为写这篇帖子时的最新版:调试基础库版本为:2.16.0,开发工具版本1.05.2104012
课程中需要修改的代码:
<button class="login" bindtap="onGotUserInfo">获取微信授权信息</button>
onGotUserInfo() {
wx.getUserProfile({
desc: '用于发布信息时获取头像与昵称',
success: (res) => {
console.log(res)
this.setData({
modalShow: false
})
this.triggerEvent('loginsuccess', res.userInfo)
},
fail: (err) => {
console.log(err)
this.triggerEvent('loginfail')
}
})
}
wx.getUserProfile()方法每次请求都会弹出授权窗口,用户同意后返回 userInfo。旧的获取方式中,可以使用
wx.getSetting()
返回值中的res.authSetting['scope.userInfo']
来判断该用户是否对该小程序授权过,然后通过wx.getUserInfo()
静默获取用户信息。但新的获取方式中,wx.getSetting()
返回值已不再包括scope.userInfo
,所以无法知晓该用户是否对该小程序授权过。这样其实是在每次获取用户信息时,都需要用户知晓并确认。所以在该项目中,在需要用户信息的地方可以直接调用login授权组件通过wx.getUserProfile()
来授权。
/miniprogram/pages/blog/blog.js文件
用户在发布博客时,调用blog.js
中onPublish()
方法,原有方式通过wx.getSetting()
判断是否授权,现在方式需要直接弹出授权框
// 发布功能
onPublish() {
this.setData({
modalShow: true,
})
// 判断用户是否授权
/* wx.getSetting({
success: (res) => {
console.log(res)
if (res.authSetting['scope.userInfo']) {
wx.getUserInfo({
success: (res) => {
// console.log(res)
this.onLoginSuccess({
detail: res.userInfo
})
}
})
} else {
this.setData({
modalShow: true,
})
}
}
}) */
},
/miniprogram/pages/blog-ctrl/blog-ctrl.js文件
用户在发布博客时,调用blog-ctrl.js
中onComment()
方法,原有方式通过wx.getSetting()
判断是否授权,现在方式需要直接弹出授权框
onComment() {
this.setData({
loginShow: true,
})
// 判断用户是否授权
/* wx.getSetting({
success: (res) => {
console.log(res)
if (res.authSetting['scope.userInfo']) {
wx.getUserInfo({
success: (res) => {
userInfo = res.userInfo
// 显示评论弹出层
this.setData({
modalShow: true,
})
}
})
} else {
this.setData({
loginShow: true,
})
}
}
}) */
},