用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,登录网站

小程序社区 首页 教程 查看内容

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

Rolan 2021-4-12 00:52

前提是这样的:为让程序员更好的加班,平台将进行以下调整:2021年2月23日起,若小程序已在微信开放平台进行绑定,则通过wx.login接口获取的登录凭证可直接换取unionID2021年4月13日后发布的小程序新版本,无法通过wx ...

前提是这样的:

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

  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的 , 这个需要特别注意

鲜花
鲜花
鸡蛋
鸡蛋
分享至 : QQ空间
收藏
原作者: 天边鱼 来自: 天边鱼Blog