调整背景
在小程序内,开发者可以通过 wx.login 接口直接获取用户的 openId 与 unionId 信息,实现微信身份登录,支持开发者在多个小程序或其它应用间匿名关联同一用户。
同时,为了满足部分小程序业务中需要创建用户的昵称与头像的诉求,平台提供了 wx.getUserProfile 接口,支持在用户授权的前提下,快速使用自己的微信昵称头像。
但实践中发现有部分小程序,在用户刚打开小程序时就要求收集用户的微信昵称头像,或者在支付前等不合理路径上要求授权。如果用户拒绝授权,则无法使用小程序或相关功能。在已经获取用户的 openId 与 unionId 信息情况下,用户的微信昵称与头像并不是用户使用小程序的必要条件。为减少此类不合理的强迫授权情况,作出如下调整。
调整说明
自 2022 年 10 月 25 日 24 时后(以下统称 “生效期” ),用户头像昵称获取规则将进行如下调整:
- 自生效期起,小程序 wx.getUserProfile 接口将被收回:生效期后发布的小程序新版本,通过 wx.getUserProfile 接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。生效期前发布的小程序版本不受影响,但如果要进行版本更新则需要进行适配。
- 自生效期起,插件通过 wx.getUserInfo 接口获取用户昵称头像将被收回:生效期后发布的插件新版本,通过 wx.getUserInfo 接口获取用户头像将统一返回默认灰色头像,昵称将统一返回 “微信用户”。生效期前发布的插件版本不受影响,但如果要进行版本更新则需要进行适配。通过 wx.login 与 wx.getUserInfo 接口获取 openId、unionId 能力不受影响。
- 「头像昵称填写能力」支持获取用户头像昵称:如业务需获取用户头像昵称,可以使用「头像昵称填写能力」(基础库 2.21.2 版本开始支持),具体实践可见下方《最佳实践》。
- 小程序 wx.getUserProfile 与插件 wx.getUserInfo 接口兼容基础库 2.21.2 以下版本的头像昵称获取需求:上述「头像昵称填写能力」从基础库 2.21.2 版本开始支持(覆盖微信 8.0.16 以上版本)。对于来自更低版本的基础库与微信客户端的访问,小程序通过 wx.getUserProfile 接口将正常返回用户头像昵称,插件通过 wx.getUserInfo 接口将返回用户头像昵称,开发者可继续使用以上能力做向下兼容。
对于上述 3,wx.getUserProfile 接口、wx.getUserInfo 接口、头像昵称填写能力的基础库版本支持能力详细对比见下表:
*针对低版本基础库,兼容处理可参考 兼容文档
请已使用 wx.getUserProfile 接口的小程序开发者和已使用 wx.getUserInfo 接口的插件开发者尽快适配。小游戏不受本次调整影响。
最佳实践
小程序可在个人中心或设置等页面使用头像昵称填写能力让用户完善个人资料:
微信团队
2022年5月9日
目前小程序开发者可以通过 wx.login 接口直接获取用户的 openId 与 unionId 信息,实现微信身份登录。对许多小程序使用场景,用户无需提供头像昵称。如有必要场景需收集用户头像昵称,可在个人中心或设置等页面让用户完善个人资料。
大胆猜测,不到年底就会继续回收“头像昵称填写能力”。堪称教科书级切香肠!
这是典型的懒政啊,治不好就杀了。
如果是担心用户隐私问题,完全可以在用户授权时提供明显的“匿名授权”选项,或者强化现有的“使用其他头像和昵称”的功能。
现在这种一刀砍处理,别说作为开发者,作为用户也体验极差,很多正规平台我都希望直接使用“微信头像昵称”,如这条评论,这是我唯一识别自己的身份标识,你可以想象这个帖子下全是“微信用户”评论的效果,像机器人刷的。
以为这样就能解决问题?这是强行逼用户去每个小程序都要重新授权两次不是????
wx.getUserProfile这个接口对开发者来说根本没意义了,opernid访问时就能拿到,给用户个随机昵称就行了,授权个锤子。
能举报不?
刚刚看完楼主的发言,发现原来废除 wx.getUserProfile 接口的原因是:
于是想吐槽一下,但是发现必须得先登录,于是我就乖乖的点了右上角的登录按钮,结果要我扫码登录,
只能又乖乖的拿出手机,打开微信,扫一扫,手机出来下面的界面
嘿嘿,感觉虽然不是小程序,但是跟楼主描述的情况挺像的,也是要求手机昵称和头像,更巧的是下面也有个【拒绝】按钮,要不点点试试
于是点了【拒绝】,然后.......
没想到真的和楼主描述的一样啊
真的是“如果用户拒绝授权,则无法使用小程序或相关功能”
看来确实要整改,不然真的乱套了,太流氓了!!!
真的是无语,昵称头像都当个宝。太草木皆兵了。