微信改动:
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获取用户基本信息,并创建新用户。
如果有错漏或者更好的方案,请不吝赐教~谢谢分享