评论

【getUserInfo/getUserProfile】小程序获取用户信息逻辑升级小尝试

由于getUserInfo接口废弃了,需要改为使用新增的getUserProfile和兼容旧版本的getUserInfo。

微信改动:

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获取用户基本信息,并创建新用户。


-------------------------------------------------------------------------------------

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

最后一次编辑于  2021-06-07  
点赞 0
收藏
评论

1 个评论

  • 稀里哗啦
    稀里哗啦
    2021-10-13

    请问我只有openId 我想要通过这个openId获取到用户的unionId应该怎么获取

    2021-10-13
    赞同
    回复
登录 后发表内容