当你看到这篇文章时,证明这是公众号平台自动推送的。
别误会,我说的微震,是指微信的小震荡。
什么意思?
先说说大家能感受到的,微信最近搞了3个事情:
这3个比较美好的变动很好理解,花叔就不分析了,花叔今天说说一个不大美好的、但大家又没感知到的事情,因为它给小程序生态带来了一丢丢震荡。
事情是这样的,喜欢研究小程序的同学昨晚应该能感受到,不少小程序好像出问题,例如Nodes 昨晚有一段时间一直在提示“服务器失联”:
菜头叔的公众号也发布了小程序故障声明,他家做的“姨妈日历”、“群里有事”两个小程序相继出现授权错误,导致没法正常使用:
迫于无奈,花叔被迫要去寻找问题所在,经过排查,究其原因是:小程序官方获取鉴权用的session_key的接口,在返回数据时去掉了expire_in参数。
这样会有什么影响呢?
我拿腾讯云的初期小程序解决方案来举例,在配置好小程序后端代码后,你会发现会话服务器上
/opt/lampp/htdocs/mina_auth/application/controllers/qcloud/minaauth/Auth.php
这个文件的代码里,在获取session_key后,会做一个expire_in返回值是否存在的判断
如果不存在的话,那么就会认为授权错误。
于是,早期应用腾讯云小程序解决方案的小程序,基本上应该都会挂掉。
好吧,那怎么办,花叔提供一个简单的解决方案,如下,把这个代码改造一下就好(被注释的是老代码):
一些不依靠腾讯云解决方案的小程序,只要没有根据这个expire_in返回值来判断的话,应该不会出现类似问题,花叔的团队之前做的“王者荣耀赛事”小程序就很硬朗,成功躲开了这歌问题。
当然,这里要说明一下,这个锅不应该腾讯云背,应该背锅的是微信官方,这次接口迭代的操作略显呵呵呵。
最后,再提醒一下各位开发者,据我所知,除了这个获取session_key的接口改动外,还有另一个小东西也改动了,就是授权后获取回来的用户头像链接由原来的http协议换成https协议了。
这也是个小坑,昨天 Nodes 在生成朋友圈分享图的时候,就突然读不出用户头像,最后是这么解决的:
这样的话,就算微信侧再换回来http协议头,也是正常的了。