uni-app 一键登录功能点击其他按钮时自动关闭

uni-app 一键登录功能点击其他按钮时自动关闭

信息类别 详情
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
HBuilderX类型 正式
HBuilderX版本号 3.2.6
手机系统 Android
手机系统版本号 Android 11
手机厂商 小米
手机机型 小米8
页面类型 vue
打包方式 云端
项目创建方式 HBuilderX

示例代码:

uni.login({  
    provider: 'univerify',  
    univerifyStyle: univerifyStyle.data,  
    success(res) {  
        // console.log("授权成功登陆成功", res.authResult);   
        uniCloud.callFunction({  
            name: 'easylogin', // 你的云函数名称  
            data: {  
                // 客户端一键登录接口返回的access_token  
                access_token: res.authResult.access_token,  
                // 客户端一键登录接口返回的openid  
                openid: res.authResult.openid  
            }  
        }).then(dres => {  
            console.log("登陆成功", dres);   
        }).catch(err => {   
        })  
    },  
    fail(err) { // 登录失败  
        console.log("失败", err)   
    }  
})

操作步骤:

uni.login({  
    provider: 'univerify',  
    univerifyStyle: univerifyStyle.data,  
    success(res) {  
        // console.log("授权成功登陆成功", res.authResult);   
        uniCloud.callFunction({  
            name: 'easylogin', // 你的云函数名称  
            data: {  
                // 客户端一键登录接口返回的access_token  
                access_token: res.authResult.access_token,  
                // 客户端一键登录接口返回的openid  
                openid: res.authResult.openid  
            }  
        }).then(dres => {  
            console.log("登陆成功", dres);   
        }).catch(err => {   
        })  
    },  
    fail(err) { // 登录失败  
        console.log("失败", err)   
    }  
})

预期结果:

  • 和文档一样主动控制关闭

实际结果:

  • 触发失败直接关闭

bug描述:

一键登录 点击其他按钮自动关闭 (这个功能做完有两周了刚写完是正常的,手动控制才关闭,最近做修改发现除了“本机号码一键登录”按钮是调 uni.closeAuthView()关闭,其他全部点击直接关闭。新建项目粘贴示例也是同样的结果)


更多关于uni-app 一键登录功能点击其他按钮时自动关闭的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

这个有解决吗,我也遇到相同的问题了

更多关于uni-app 一键登录功能点击其他按钮时自动关闭的实战教程也可以访问 https://www.itying.com/category-93-b0.html


根据你的描述,这是一个典型的uni-app一键登录(univerify)界面交互问题。从截图看,你遇到的是登录弹窗中除了“本机号码一键登录”按钮外,其他按钮点击都会导致登录界面意外关闭。

这个问题通常是由于uni-app框架对一键登录弹窗的事件处理机制导致的。在uni-app中,一键登录弹窗是一个原生组件,其内部按钮的点击事件会触发特定的回调处理。

问题分析:

  1. 一键登录弹窗默认提供了几个按钮:“本机号码一键登录”、“其他手机号登录”、“关闭按钮”
  2. 当用户点击“其他手机号登录”或“关闭按钮”时,系统会触发fail回调
  3. 在你的代码中,fail回调只是打印了错误信息,没有处理界面关闭后的逻辑

解决方案:

修改你的登录代码,在fail回调中正确处理不同的失败场景:

uni.login({  
    provider: 'univerify',  
    univerifyStyle: univerifyStyle.data,  
    success(res) {  
        // 登录成功处理
        uniCloud.callFunction({  
            name: 'easylogin',
            data: {  
                access_token: res.authResult.access_token,  
                openid: res.authResult.openid  
            }  
        }).then(dres => {  
            console.log("登陆成功", dres);   
        }).catch(err => {  
            console.error("云函数调用失败", err);
        })  
    },  
    fail(err) { 
        // 详细处理失败情况
        console.log("登录失败", err);
        
        // 根据错误码判断用户操作
        if (err.errCode === 30002 || err.errCode === 30003) {
            // 用户点击了其他登录方式或关闭按钮
            // 这里可以跳转到其他登录页面
            uni.navigateTo({
                url: '/pages/login/other-login'
            });
        } else {
            // 其他错误情况
            uni.showToast({
                title: '登录失败,请重试',
                icon: 'none'
            });
        }
    }  
})
回到顶部