wx.getUserProfile 修改方案
发布于 3 年前 作者 shaoxia 3308 次浏览 来自 分享

最近微信关于用户头像、昵称授权又做了调整。
点击查看原文

解决方案思路如下:

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每次都会弹授权框,如果每次都让用户授权,体验不好。如果只授权一次,存入服务器,以后都展示的是这个用户信息。在用户微信改名,改头像后,服务器储存的用户信息还是__以前__的。
所以,把授权状态存入缓存,起码在用户更换手机,或者删除过小程序,又进来时,会弹出授权提示,可以让用户__重新授权__,将服务器里用户的信息进行一次__更新__。

3 回复

还需要对以前版本的做适配,我们现在上去有些用户不支持getUserProfile直接不能用了

学习了,感谢分享。

回到顶部