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中,一键登录弹窗是一个原生组件,其内部按钮的点击事件会触发特定的回调处理。
问题分析:
- 一键登录弹窗默认提供了几个按钮:“本机号码一键登录”、“其他手机号登录”、“关闭按钮”
- 当用户点击“其他手机号登录”或“关闭按钮”时,系统会触发
fail回调 - 在你的代码中,
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'
});
}
}
})

