微信小程序调整登录、用户信息相关接口得到的坑 - 新闻资讯 - 云南小程序开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 小程序相关 >

微信小程序调整登录、用户信息相关接口得到的坑

发表时间:2021-4-13

发布人:葵宇科技

浏览次数:6

前提是这样的:

为让程序员更好的加班,平台将进行以下调整:

  1. 2021年2月23日起,若小程序已在微信开放平台进行绑定,则通过 wx.login 接口获取的登录凭证可直接换取unionID
  2. 2021年4月13日后发布的小程序新版本,无法通过 wx.getUserInfo 与 <button open-type="getUserInfo"/> 获取用户个人信息(头像、昵称、性别与地区),将直接获取匿名数据(包括 userInfo 与 encryptedData 中的用户个人信息),获取加密后的 openID 与 unionID 数据的能力不做调整。此前发布的小程序版本不受影响,但如果要进行版本更新则需要进行适配。

坑是这样的:

以前: wx.getUserInfo 与 <button open-type="getUserInfo"/> 除了可以获取到用户的头像昵称, 还可以获取到 encryptedData 和 iv

这两个是用来解析 openID 、 unionID 的

拿我们的项目来说, 通过 getUserInfo 基本一套就可以带走用户昵称头像及 openID 、 unionID

现在: wx.getUserProfile 虽然也可以获取到encryptedData和iv, 但是从这里是解析不出来 openID 、 unionID 的

也就是说, 指望一键更换的小伙伴们想多了, 如果你原来的逻辑是直接往后端传入 encryptedData 和 iv 然后获取 openID 、 unionID 是行不通的.

所以怎么拿呢? 还得调用一遍 wx.getUserInfo …

和谐而亲切的官方并没有告诉你 wx.getUserProfile 是拿不到这俩唯一ID的, 不过他们还是细心而体贴的给 wx.getUserProfile 放进去了 encryptedData 和 iv ….

现有解决方案(抛砖引玉), 如果不想大改的情况下:

后端在原有接受 encryptedData 和 iv 的基础上再增加 userInfo 的参数

然后小程序传參的时候是这样:

wx.getUserProfile({
     desc: '用于完善会员资料',
     success: (res) => {
         let userInfo = res.userInfo;
         wx.getUserInfo({
             success: (res) => {
                 let wxUserInfo = res;
                 API.wechatRegister({
                     userInfo: userInfo, // 用于获取userInfo
                     encryptedData: wxUserInfo.encryptedData, // 用于解密openID、unionID
                     iv: wxUserInfo.iv,// 用于解密openID、unionID
                 })
             }
         })
     }
 });

另外, 需要注意的是

wx.getUserProfile 在 2.16.0之前的版本是没有encryptedData和iv的 , 这个需要特别注意

相关案例查看更多