我也出了这种情况,我自己在pages里写的登录页面,但是微信小程序会自己在最外面的app.js中生成一个wx.login,把那个删除了就不会出现这种问题。我自己是这样改好的
wx.checkSession方法问题,为什么检测不了用户登录态?希望官方能做出解答,这个问题很严重,因为已经影响到用户体验了!!! 首先说明下我在小程序中的登录(wx.login)和授权获取用户信息、手机号的大致流程。 1、进入小程序时在app.js中的onShow有一个操作,初始化用户登录(登录具体流程是,先wx.checkSession获取登录态是否有效,如果失效则重新wx.login刷新登录态,并把code拿给后端换取新的session_key,并保存至db中) ★这个初始化登录操作是一个全局统一的方法,具体代码如下★ [图片] [图片] 2、现在遇到的情况是,用户在第一次进入小程序后,我如愿的登录并拿到的用户的session_key,并在后端db储存下来。但是,当这个用户隔了10来天再次进入小程序,并点击授权获取用户基本信息并发给后端解密时,就解不出来了!! 3、所以问题来了,这是在初始化的checkSession时并没有检测到用户登录态已经过期了?而告诉我的是success,所以程序就没有去走login登录重新获取登录态!(说明一下,我在后端做了session_key的最近一次更新时间,然而这个用户的session_key是他第一次进小程序时初始化登录得到的) 4、我现在的处理是,如果后台解密失败会返回一个特定的code用于前端做判断,直接调用wx.login()做一次登录,并提示客户"系统开了个小差,请再次点击重试!" 。。。虽然再次点击授权是可以了,但是给用户的体验并不好! ★附上授权获取用户信息、手机号的代码截图(获取手机号时加了checkSession全局方法去验证登录态都没作用!)★ [图片] [图片]
2021-08-21我也出了这种情况,我自己在pages里写的登录页面,但是微信小程序会自己在最外面的app.js中生成一个wx.login,把那个删除了就不会出现这种问题。我自己是这样改好的
checkSession一直回调success怎么回事?在手机和开发者工具中,checkSession可以根据用户的使用正常的检查登录态是否过期; 但是在电脑版的微信中打开小程序,checkSession一直走到success的回调中,这是什么原因造成的呢? 在手机和电脑中把小程序删除后,电脑重新打开还是登录态为正常,所以导致无法登陆! 最恐怖的是使用一个新的电脑,在一个手机和电脑都没有打开过小程序的微信中任然出现该问题! 看其他开发者在社区的反馈,说app.js中存在wx.login,排查后我们的代码中是不存在的。 代码: [图片] checkSession的结果: [图片] 顺便问下红色的报错部分是什么东西?
2021-08-21