wx.getUserProfile 修改方案
最近微信关于用户头像、昵称授权又做了调整。
点击查看原文
解决方案思路如下:
1、在util.js里写一个通用函数,函数的功能是,用户授权成功,将头像昵称,存入服务器,同时,在本地缓存设置标记用户授权成功。
[代码]// util.js
function getUserProfile() {
wx.getUserProfile({
desc: '用于完善个人资料',
success: function(res) {
var userInfo = res.userInfo
// console.log('userInfo==>', userInfo)
wx.setStorageSync('storage_info', 1);//本地标记
//下面将userInfo存入服务器中的用户个人资料
//...
},
fail() {
console.log("用户拒绝授权")
}
})
}
[代码]
2、在需要用户授权时,做判断,如果本地已经授权,直接执行正常业务逻辑。如果未授权,则提示授权。
[代码] chooseTap: function(e) {
//如果未授权,就提示授权,如果授权了,就执行正常的业务逻辑
if (!wx.getStorageSync('storage_info')) {
util.getUserProfile()
return
}
//下面是正常业务逻辑
//...
}
[代码]
3、在用户进入小程序时,从服务器获取用户信息(如果已授权,就有之前存入的头像,昵称),在页面展示用户信息。
完成以上3步,就全部完成了。
说明:把授权状态存入缓存的好处是:因为wx.getUserProfile每次都会弹授权框,如果每次都让用户授权,体验不好。如果只授权一次,存入服务器,以后都展示的是这个用户信息。在用户微信改名,改头像后,服务器储存的用户信息还是以前的。
所以,把授权状态存入缓存,起码在用户更换手机,或者删除过小程序,又进来时,会弹出授权提示,可以让用户重新授权,将服务器里用户的信息进行一次更新。