关于javascript:微信小程序又双叒叕改重要接口了

32次阅读

共计 1504 个字符,预计需要花费 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 接口即可。
开发者若须要在界面中展现用户的头像昵称信息,能够通过 <open-data> 组件进行渲染,该组件无需用户确认,能够在界面中间接展现。
在局部场景(如社交类小程序)中,开发者须要在获取用户的头像昵称信息,可调用wx.getUserProfile 接口,开发者每次通过该接口均需用户确认,请开发者妥善处理调用接口的机会,防止适度弹出弹窗骚扰用户。

这段话其实写得很分明了,对于不须要用到其余用户信息的小程序,齐全不用调用接口去获取用户信息,间接应用凋谢数据即可展现本身头像性别,参考这篇官网文档。
如果的确须要其余用户的用户信息,比方做一个评论性能,可能须要展现所有评论人的信息,像这种就必须在用户评论前通过 wx.getUserProfile 接口来获取其用户信息了。

老代码如何批改?

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

参考我的项目

具体实现能够参考我的商城小程序我的项目。

我的项目体验地址:体验

代码:代码

正文完
 0