微信小程序又双叒叕改重要接口了!

来源:掘金
2021-04-30
22550
导语:微信官方在2021年2月24号发布了一篇小程序登录、用户信息相关接口调整的通知,通知调整了三个模块的内容,分别是放开wx.login获取unionid的能力、停掉wx.getUserInfo接口获取用户信息的能力、使用wx.getUserProfile接口获取用户信息。
阅读本文大概需要4分钟

微信官方在2021年2月24号发布了一篇小程序登录、用户信息相关接口调整的通知,规定在2021年4月28日24时停止wx.getUserInfo接口获取用户信息的能力。

通知调整了什么?

这个通知主要调整的内容有三块:

1. 放开wx.login获取unionid的能力:

只要开发者将小程序绑定在开放平台上,那么开发者调用这个接口就能获取到用户的unionid。这样就避免了开发者需要调用wx.getUserInfo接口让用户授权来获取用户unionid的问题。也为下面一个调整扫清了障碍。

2. 停掉wx.getUserInfo接口获取用户信息的能力:

可能微信官方也意识到了wx.getUserInfo这个接口的问题,这个接口的设计其实并不合理,为啥呢?因为这一个接口干了两个事情:第一是获取用户信息(就是头像昵称等),第二呢,这个接口还承担了获取用户unionid的功能。这就导致开发者为了打通多个小程序、公众号、移动应用等的数据,而调用wx.getUserInfo接口。开发者事实上的需求只是获取用户unionid(这本应该是登录接口给出的信息),而不是用户头像信息,也就是说这个接口事实上被滥用了。

3.使用wx.getUserProfile接口获取用户信息:

如上面所说,由于意识到wx.getUserInfo接口设计不合理,微信就将这个接口废除了,用wx.getUserProfile取代之,新接口的功能很明确:获取用户信息。

怎么看待这个调整?

在我看来,这次的调整其实彻底划清楚了小程序登录与授权的界限。关于小程序登录与授权请参考这两篇文章:小程序登录小程序授权。 首先unionid完全由wx.login接口获取,没有再跟用户头像等信息搅合在一起,登录的功能归了登录;授权头像由getUserProfile接口获取,授权的功能归了授权的接口。这样就贯彻了一个接口只做一件事情的原则。因此,从设计的角度来说,这次的调整是完全合理的。 当然,这个调整过程也比较迅猛,很多开发者对此都颇有怨言,也许官方能有更合适的做法吧。

新开发的小程序该怎么做?

通知的最后部分有这样一段最佳实践:

调整后,开发者如需获取用户身份标识符只需要调用wx.login接口即可。 开发者若需要在界面中展示用户的头像昵称信息,可以通过组件进行渲染,该组件无需用户确认,可以在界面中直接展示。 在部分场景(如社交类小程序)中,开发者需要在获取用户的头像昵称信息,可调用wx.getUserProfile接口,开发者每次通过该接口均需用户确认,请开发者妥善处理调用接口的时机,避免过度弹出弹窗骚扰用户。

这段话其实写得很清楚了,对于不需要用到其他用户信息的小程序,完全不必调用接口去获取用户信息,直接使用开放数据即可展示自身头像性别,参考这篇官方文档。 如果确实需要其他用户的用户信息,比如做一个评论功能,可能需要展示所有评论人的信息,像这种就必须在用户评论前通过wx.getUserProfile接口来获取其用户信息了。

老代码如何修改?

对于已经上线的代码该如何修改呢? 首先需要检查小程序客户端所有用到wx.getUserInfo接口的地方,将这个接口替换成wx.getUserProfile。同时检查下小程序服务端代码,看看是否用到了wx.getUserInfo解密后unionid字段,若有,则需要做好兼容(因为wx.getUserProfile不会返回unionid)。如果还要做得更细致些,那么还需要处理微信版本的兼容问题,具体请参见官方文档



免费获取专属 《策划方案 》及报价
免费体验我们的业务系统、OA系统、在线教育、电商系统、智慧办公等产品定制化方案,助力您的信息化发展之路