在手机和开发者工具中,checkSession可以根据用户的使用正常的检查登录态是否过期;
但是在电脑版的微信中打开小程序,checkSession一直走到success的回调中,这是什么原因造成的呢?
在手机和电脑中把小程序删除后,电脑重新打开还是登录态为正常,所以导致无法登陆!
最恐怖的是使用一个新的电脑,在一个手机和电脑都没有打开过小程序的微信中任然出现该问题!
看其他开发者在社区的反馈,说app.js中存在wx.login,排查后我们的代码中是不存在的。
代码:
checkSession的结果:
顺便问下红色的报错部分是什么东西?
checkSession 的作用是到后台检查生成的 sessionKey 是否有效,所以如果你在之前有调用过 login 并且获取了 sessionKey,在新客户端检查收到 success 回调是有可能的。
正确的做法应该是进入小程序后先检查本地有没有未过期的登录票据(你们自己小程序生成的 sessionId 之类的串),有的话说明后台能找到对应的 sessionKey,这时候才用 checkSession 检查是否过期。如果登录票据都没有,那当然要先 login。
这个bug到现在还没修复
我也出了这种情况,我自己在pages里写的登录页面,但是微信小程序会自己在最外面的app.js中生成一个wx.login,把那个删除了就不会出现这种问题。我自己是这样改好的
持续关注中
因为app.js中默认就有 wx.login() 的调用,所以导致每次测试都是success,可以先手动删除再进行测试即可。
checkSession真的有毒,app.js里没有写wx.login,page里的onshow写了wx.login,页面不动,半个小时后,还是走success,然而这个时候这个登录凭证实际已经过期了,造成后端无法解密
我是在每次获取手机号前重新再wx.login,方法虽然笨但有效
wx.checkSession 具体在哪里调用呢? 我之前是在onshow时候调用,如果不在这里调用,请问应该在哪里调用呢?现在微信出了个限频。。。
应该是频率限制了吧
https://developers.weixin.qq.com/miniprogram/dev/framework/performance/api-frequency.html
bug 修复速度太慢了