微信收回了wx.getUserInfo()、wx.getUserProfile()这两个api,不能再直接调用api获取用户的微信头像和昵称了,说白了就是:头像昵称不再支持授权后直接获取,而是要让用户自己填写了。
因此需要一套新的方案来应对这个变化。

java 微信 获取你的头像 获取微信头像api_回调函数

好在微信还算稍微有那么一点点良心,为我们开发者提供了头像昵称填写能力,用它提供的两个特定的组件,点击时分别可快速获取用户头像和昵称,下图为官方示例图:

java 微信 获取你的头像 获取微信头像api_封装_02


java 微信 获取你的头像 获取微信头像api_微信_03

于是我自己模拟设计了一个和微信授权相似风格的头像昵称填写弹窗,以实现快速的头像昵称填写。

java 微信 获取你的头像 获取微信头像api_封装_04


头像和昵称都是必填项。

由于在不同项目里,不同的人在使用时,保存头像昵称的接口路径和参数名是不一样的,因此该组件接收一个prop:submit,这是个函数,外部传入,用于调用接口保存昵称头像,
放在点击提交时的回调里执行。

点击提交会向外抛出一个事件:submit,并携带选择的头像和昵称,可在submit的回调函数调用接口saveAvatarNickName,把头像和昵称保存在后端,保存成功后关闭弹窗。

点击关闭会关闭弹窗,同时向外部抛出一个事件:cancle,可指定回调函数处理相关逻辑。

这个弹窗封装成一个全局组件,在app.json中注册,然后封装一个全局方法:setAvatarNickName,挂载到wx对象上,在有需要拉起该弹窗的页面只需挂载一下,便可通过调用wx.setAvatarNickName()随时拉起。

同时封装一个关闭该弹窗的全局方法closeSetAvatarNickName,也挂载在wx对象上,只需在对应页面调用:wx.closeSetAvatarNickName()即可关闭该弹窗。 其实这个可有可无,用户自己点关闭就关了,属于锦上添花。

以上是设计思路,下面是具体实现。

-------累了,待更新---------