【getUserInfo/getUserProfile】小程序获取用户信息逻辑升级小尝试
发布于 3 年前 作者 mingzou 2732 次浏览 来自 分享

微信改动:

2021年4月13日以后

  • wx.getUserInfo不再返回真实的用户昵称、头像等,而是返回匿名信息。也不能获得openid、unionId的信息

  • wx.authorize 请求授权还是 wx.getSetting 获取授权状态,都将直接返回 true。所以无法获取用户授权状态了

  • wx.getUserProfile是新增的获取用户昵称、头像等信息的新方法,需要绑定在button 上 bindtap 的回调中。但是这个方法也不会返回openid、unionid的信息

    推荐使用if (wx.getUserProfile) 来判断是否支持getUserProfile方法

  • 前端通过wx.login获取code,后端可根据code获得openid和unionid(新调整)

  • 不能在wx.login的success回调中调用wx.getUserProfile

    wx.login 和 wx.getUserProfile 单独调用;

或者先调用 wx.getUserProfile 之后在 success 回调中调用 wx.login 完成授权登录流程

升级流程

  • 需求

    业务上一定要获取到用户头像、用户昵称、openid才算是注册完成

  • 处理

    1、在授权登录页,先获取用户信息的encryptedData、iv,暂存

    这里优先使用wx.getUserProfile(用 if(wx.getUserProcfile) 判断 )
    
    如果不支持wx.getUserProfile,则用回wx.getUserInfo获取
    

    2、再通过wx.login获取code,并把上面获取到的encryptedData、iv一同交给后端注册接口。后端注册接口先通过code获取到openid或unionid,然后判断用户是否已注册,已注册则返回。未注册则通过encryptedData、iv获取用户基本信息,并创建新用户。


如果有错漏或者更好的方案,请不吝赐教~谢谢分享

回到顶部