评论

05.适配 wx.getUserProfile 的一点简单想法

适配 wx.getUserProfile 的一点简单想法

先看官方的最新通知

周知:getUserInfo 开发版和体验版 已对齐 getUserInfo 匿名表现,正式版将于 4月13日 正式对齐 getUserInfo 匿名表现。

请开发者使用 getUserProfile 获取用户信息。 小程序登录、用户信息相关接口调整说明:https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801

原先的getUserInfo能力

原先的 getUserInfo 的能力,具体看这里:https://developers.weixin.qq.com/community/develop/doc/000c2424654c40bd9c960e71e5b009?highline=getUserInfo

我对 getUserInfo 的理解

我们一般开发者,会用 wx.getUserInfo 来实现 openId 和 用户信息的获取,是非常的便捷的。

并且还能通过 wx.getSetting 获取 "scope.userInfo" 判断用户用户是否已经授权。

wx.getSetting + wx.getUserInfo 能近似完美解决用户登陆授权场景

华丽的分割线

2021-02-04 官方要对小程序登录、用户信息相关接口调整说,具体链接:https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801?blockType=1

这样我们开发者会面临的用户登陆授权的调整,会比较痛,但也必须要去改,因为没办法。

怎么改呢

先不要着急去适配 getUserProfile,先要弄清楚自己的小程序用 getUserInfo 获取那些能力?实现哪些能力?

我的理解,如果是用 wx.getSetting + wx.getUserInfo 来实现获取用户的openId(unioinId) 和用户头像昵称信息的话,可以这样去调整?

wx.login 可以拿到用户的 openId,流程如下:

如果绑定了开发平台,还可以通过 wx.login 静默获取用户的 uninonId

这个过程是静默的,不需要用户参与。

然后对于需要用户头像信息的时候,在使用 wx.getUserProfile 能力即可。

小结

1.wx.login + wx.getUserProfile 能实现 wx.getUserInfo 的能力,也能满足我们的业务场景。

2.看到官方的调整,先不要着急去调整,先弄清楚要我们的业务场景使用了那些API获取那些能力

3.关于wx.getSetting 返回 "scope.userInfo" 为 undefined。我记得社区有人提问了,等官方回复就好,其实我们可以不依赖这个,原因留给你

4.用户头像更新不及时的问题,我们看看微信聊天记录,当你好友更新头像,当你不点击时,有时候展示的还是老头像,当你点击时,会显示新头像(我们何不借鉴一下,提供给用户更新的能力即可)

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

12 个评论

  • 耿霄
    耿霄
    2021-04-19

    获取unionId最新方法:2021-04-19

    2021-04-19
    赞同 1
    回复
  • 朱高
    朱高
    2021-04-07

    我用云开发的,发现不用修改太多,还算简单。刚刚记录了一篇《云开发快速从 getUserInfo 切换到 getUserProfile》

    2021-04-07
    赞同 1
    回复
  • 神经蛙
    神经蛙
    2021-04-06

    2021-04-06
    赞同 6
    回复 3
    • 耿霄
      耿霄
      2021-04-06
      哈哈哈哈
      2021-04-06
      回复
    • KeNnY
      KeNnY
      2021-04-07
      太有才了
      2021-04-07
      回复
    • TIGA
      TIGA
      2021-11-08
      我看你的小程序是不想审核通过了
      2021-11-08
      回复
  • Youngwell
    Youngwell
    2021-05-10

    也就是说:现在获取用户的openId(unioinId) 和用户头像昵称信息根本就不需要【解密】什么事了吧

    2021-05-10
    赞同
    回复 1
    • 耿霄
      耿霄
      2021-05-10
      是的
      2021-05-10
      回复
  • .
    .
    2021-04-16

    请问为什么在wx.login内调用wx.getUserProfile会调用失败,报错getUserProfile:fail can only be invoked by user TAP gesture.可以先调用wx.getUserProfile再调用wx.login吗,这两个接口调用顺序有什么影响吗?

    2021-04-16
    赞同
    回复 1
    • 耿霄
      耿霄
      2021-04-16
      wx.getUserProfile 必须是用户才能触发


      wx.getUserProfile 是获取用户头像,无法唯一区分用户身份,wx.login 能换到 openId(unionid),可以作为用户唯一身份,并且是静默的,建议先调用 wx.login,在根据业务决定何时调用wx.getUserProfile
      2021-04-16
      回复
  • Winston
    Winston
    2021-04-16

    小程序插件不支持这个API,所以我是不是可以在小程序插件继续使用 getUserinfo

    2021-04-16
    赞同
    回复
  • undefined
    undefined
    2021-04-15

    学习

    2021-04-15
    赞同
    回复
  • 耿霄
    耿霄
    2021-04-13

    官方最新通知(2021-04-13)

    周知:小程序将暂缓调整公告 “小程序登录、用户信息相关接口调整说明” 中关于 4月13日 后发布的小程序将回收 wx.getUserInfo 接口可获取用户个人信息能力。回收时间近期内会确定并通知,建议开发者提前适配 wx.getUserInfo 接口回收场景。


    补充说明:

    1、建议开发者尽快使用 wx.getUserProfile 来获取用户信息,2.10.4 以下基础库不支持使用 wx.getUserProfile 获取用户信息,采用 wx.getUserInfo 原有获取流程不受影响,兼容方式参考示例代码:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/user-info/wx.getUserProfile.html

    2、正式版小程序在 wx.getUserInfo 回收前可正常使用,回收后将返回匿名信息

    3、wx.getSetting 获取的 scope.userInfo 按照调用 wx.getUserInfo 返回,返回匿名数据 scope.userInfo 也为 true

    4、wx.getUserProfile返回的iv、encryptedData 解密获取不到 unionId,请使用 wx.login 获取 unionId

    5、wx.getUserProfile 基础库2.16.0以下,无法获取 iv 和 encryptedData,近期会灰度覆盖到 2.10.4


    小程序登录、用户信息相关接口调整说明:https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801


    2021-04-13
    赞同
    回复
  • 安达
    安达
    2021-04-13

    我采用的 简单有效 的修改方法

    https://developers.weixin.qq.com/community/develop/article/doc/00000cc422c12844b4fb644d056813


    2021-04-13
    赞同
    回复
  • 一直在,
    一直在,
    2021-04-09

    小结上面那一段话写错了吧,或者说那个截图放在此处有误导作用。

    官方说明: 2月23日后,开发者调用wx.login获取的登录凭证可以直接换取unionID,无需满足以上条件。

    2021-04-09
    赞同
    回复 2

正在加载...

登录 后发表内容