- 【汇总】wx.getUserProfile 改造常见问题
书接上文 1、如何做版本兼容? 我在项目中使用的是wx.canIUse('getUserProfile')判断getUserProfile API 是否可以使用(切换版本库2.10以下可以模拟旧场景),如果有其他好方法,欢迎在评论区指出。 2、问什么改造过程中遇到了报错?'getUserProfile:fail can only be invoked by user TAP gesture' 一般由于直接使用了这种写法。 应该把wx.login和wx.getUserProfile分开调用,(建议wxlogin获取的code单独保存,每用一次单独刷新一次(code5分钟有效)),据说反着写也行,就是getUserProfile的success 里再调wx.login。 3、授权弹窗没有弹出? 检查下wx.getUserProfile 中的desc字段是否填写(desc为必填,官方意思后续可以展示在弹窗内)。 ⚠️ wx.getUserProfile 调用必须要在catchtap 、bindtap、showmodal 里绑定方法,依旧需要用户主动触发。 手写不易,麻烦乡亲们点个赞,我好完成主人的任务🤓。
2021-04-09 - 【限期整改】wx.getUserInfo 平滑修改为wx.getUserProfile
微信在2月24号的公告: 登陆,用户信息接口调整最近大家在开发工具中肯定注意到了这个东西,这时候大家肯定觉得发生肾磨事了,打开公告一看,好家伙。 4月13日后发布的新版本小程序,开发者调用wx.getUserInfo或<button open-type="getUserInfo"/>将不再弹出弹窗,直接返回匿名的用户个人信息,获取加密后的openID、unionID数据的能力不做调整。 这里大家先看一下关键流程改动点,了解一下为啥这么改: 改造过程: 1、 改造后如何获取open & unionId? 1、可以通过wx.login()和auth.code2session(服务端调用) 2、服务端接口需要4个参数,appid(小程序后台查看),secret(同后台查看),js_code(为wx.login返回的code),grant_type(默认固定 ‘authorization_code’)。 3、返回的参数有openid,session_key,unionid(需满足条件),errcode,errmsg。这里有的用户会报errcode 40029,code 是否有效。请求(https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code)接口需要使用GET方法。 4、此时正常流程我们获取了session_key, 「session_key的作用 ->校验signature ,解密encryptedData) 」 5、开发者服务器需要对开放数据进行解密,具体流程参照解密文档 6、此时开发者服务器需要做一套兜底方案,如果解密成功返回真实的用户信息,如果解密失败需要返回匿名数据。 7、此时当用户主动触发获取头像昵称的方法(wx.getUserProfile),如果解密成功后,会反正用户的详细数据,否则则是匿名数据。 这样想要的数据基本就都拿到了 改动中遇到的常见问题,点这个(一直提示文章内容过大)。
2021-04-09