评论

03.getUserInfo和getUserProfile 对比

getUserInfo和getUserProfile

最近动态

wx.getUserProFile() 在2.16.0成功回调有iv、encryptedData,具体看这里https://developers.weixin.qq.com/community/develop/doc/000c04d0490118d8a6ebf675a56c00

调整背景

很多开发者在打开小程序时就通过组件方式唤起 getUserInfo 弹窗,如果用户点击拒绝,无法使用小程序,这种做法打断了用户正常使用小程序的流程,同时也不利于小程序获取新用户。详情可以点击官方调整链接(https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801)

调整前后API功能的对比

能力检测

两个前提条件:

  • 1.开发者工具版本不低于 1.05.2103022
  • 2.基础库版本不低于 2.10.4

代码片段: https://developers.weixin.qq.com/s/odMs3wmX7Ko3

测试过程

  • step1: 在开发工具设置清除全部缓存
  • step2: 点击 getUserInfo 按钮,会弹出用户授权,允许后会得到这些信息,见截图

  • step3: 在终端输入下面代码,也可以获取上面截图数据(今天还不到截止时间,还能获取完整的用户头像和昵称)
wx.getUserInfo({
    complete: (res) => {
        console.log(res)
    }
})
  • step4: 点击 getUserProfile 按钮,会弹出用户授权,允许后会得到这些信息,见截图(只有用户昵称和头像信息)

  • step5: 通用在终端输入下面代码,获取不到任何信息,符合`若开发者需要获取用户的个人信息(头像、昵称、性别与地区),可以通过wx.getUserProfile接口进行获取,且开发者每次通过该接口获取用户个人信息均需用户确认`
wx.getUserProfile({
    complete: (res) => {
        console.log(res)
    }
})
  • step6: 可以重复点击 getUserInfo 按钮和 getUserProfile 按钮进行测试。

功能对比讲解

1.4月13日前未发布的,wx.getUserInfo 能力

wx.getUserInfo(Object object) 会返回 encryptedData、signature、rawData,通过将返回的数据传递给服务器,服务端能解析出用户的身份标识,即 unionId(unionId 获取机制:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html)

【对我们业务来说】

从 wx.getUserInfo 就是要两样东西:unionId和用户信息(头像和昵称)。

但从 2021年2月23日起,可以通过 wx.login 接口获取的登录凭证可直接换取 unionID,可以替代一部分wx.getUserInfo 的功能了。

2.新增 getUserProfile 能力

wx.getUserProfile 能获取到头像和昵称,可以替代 wx.getUserInfo 的另外一部分功能。

3.小结

从这里是不是可以得出,wx.login + wx.getUserProfile 基础可以替代之前的 4月13日前未发布的,wx.getUserInfo 能力。其实不然,如果真是这样的,官方是不是没必要这样搞,咱们接着看。

4.wx.getUserInfo 和 wx.getUserProfile 区别

  • 1.功能上是 wx.getUserInfo  不在返回用户授权的头像昵称,只返回匿名信息,但 wx.getUserProfile 会返回用户授权的头像昵称。
  • 2.wx.getUserInfo 授权成功后,当下次调用时,可以直接获取授权成功返回数据,不需要每次都需要用户确认,但 wx.getUserProfile 每次都需要用户确认允许后才能拿到用户信息
  • 3.对于业务来说,可以通过 wx.getUserProfile 获取用户信息和昵称后,要存在自己服务器,不能像之前那样每次都通过 wx.getUserInfo 方式获取,否则体验会比较差

疑问

  • 1.4月13日后发布的新版本小程序,如果用户未更新到新版本,此时调用 wx.getUserInfo 会不会返回用户授权的头像昵称(如果不确定,业务可能需要兼容处理)
  • 2.4月13日后发布的新版本小程序,用户更新到新版本,调用 wx.getUserInfo 返回匿名的头像昵称支持服务器解密吗?


常见问题汇总

1.wx.canIUse 判断getUserProfile结果是false,可以通过直接判断 wx.getUserProfile 即可,类似问题可以查看官方知识库https://developers.weixin.qq.com/community/develop/doc/000cac40cf0eb8d3e429647c351c09?_at=1614912876047

最后一次编辑于  2021-04-02  
点赞 16
收藏
评论

24 个评论

  •  波比
    波比
    2021-03-04

    wx.getUserInfo 和 wx.getUserProfile 的授权弹窗是一样的吗

    2021-03-04
    赞同
    回复 1
    • 耿霄
      耿霄
      2021-03-04
      有些差异,建议下载代码片段运行看看效果
      2021-03-04
      回复
  • 黄皓
    黄皓
    2021-03-04

    现在就希望官方可以就疑问1给出一个具体的指导,不然这样吊着,不知道要怎么改。

    2021-03-04
    赞同
    回复 2
    • 土豆
      土豆
      2021-03-04
      最好在开发工具上可以提前调试
      2021-03-04
      回复
    • 耿霄
      耿霄
      2021-03-04
      先优先做好兼容处理,这样不至于到时候太被动
      2021-03-04
      回复
  • 有棱角的胖子
    有棱角的胖子
    2021-03-03

    大佬们是不是都是在4月13号后才发布wx.getUserProfile的版本啊

    2021-03-03
    赞同
    回复 8
    • 耿霄
      耿霄
      2021-03-03
      我理解不是,见下图。但我们可以通过 wx.canIUse 判断是否支持从而进行兼容处理
      2021-03-03
      回复
    • 耿霄
      耿霄
      2021-03-03
      4月13号之后发布新版本应该是对 getuserInfo 能力的调整
      2021-03-03
      回复
    • 有棱角的胖子
      有棱角的胖子
      2021-03-03回复耿霄
      现在wx.canIUse(getUserProfile)返回的是false,4月13号后wx.canIUse(getUserProfile)就会返回true吗
      2021-03-03
      回复
    • 耿霄
      耿霄
      2021-03-03回复有棱角的胖子
      1.基础库版本多少
      2.环境是真机还是开发工具
      2021-03-03
      回复
    • 有棱角的胖子
      有棱角的胖子
      2021-03-03回复耿霄
      真机和开发者的基础库都是2.15.0,实际上wx.getUserProfile是可以调用的,就是wx.canIUse(getUserProfile)返回为false,如果4月13号更新后wx.canIUse(getUserProfile)返回为true,那就可以用wx.canIUse来判断兼容
      2021-03-03
      回复
    查看更多(3)
  • 耿霄
    耿霄
    2021-03-03

    欢迎各位老铁来补充遇到的问题或坑

    2021-03-03
    赞同
    回复 5
    • 怦然心动
      怦然心动
      2021-03-26
      老哥,请问一下对于这次4月13号的更新,我该如何提前进行调试呢?授权有用到getUserInfo,获取unionId和openid也用到了,不知道该如何进行新版的调整,或者如何进行发布前的更新调试?
      2021-03-26
      回复
    • 耿霄
      耿霄
      2021-03-26回复怦然心动
      getUserInfo 获取 unionId,可以通过 wx.login 来实现
      getUserInfo 获取用户头像,可以通过 wx.getUserProfile  来实现


      如果getUserInfo仅仅是为了获取union和头像,可以直接迁移。如果担心的话,可以对其进行兼容。
      先判断wx.getUserInfo 能不能获取用户头像,如果能的话,就用。如果不能的话,就引导用户点击调用wx.getUserProfile  来实现
      2021-03-26
      回复
    • 耿霄
      耿霄
      2021-03-26回复怦然心动
      官方也给出兼容了 https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html#%E7%A4%BA%E4%BE%8B%E4%BB%A3%E7%A0%81
      2021-03-26
      回复
    • 怦然心动
      怦然心动
      2021-03-26
      感谢~
      2021-03-26
      回复
    • 耿霄
      耿霄
      2021-03-26回复怦然心动
      不客气,加油
      2021-03-26
      回复

正在加载...

登录 后发表内容