大太阳嗷嗷
大太阳嗷嗷
  • 发布:2025-07-09 09:58
  • 更新:2025-07-09 11:18
  • 阅读:97

【报Bug】uniapp一键登录点击其他登录方式也关闭了弹窗

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: w10

HBuilderX类型: 正式

HBuilderX版本号: 4.66

手机系统: Android

手机系统版本号: Android 15

手机厂商: 华为

手机机型: 华为mate40pro

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

uni.preLogin({
provider: 'univerify',
success(e) { //预登录成功
console.log(e)
// 显示一键登录选项
uni.login({
provider: 'univerify',
univerifyStyle: {
"fullScreen": true, // 是否全屏显示,默认值: false
"icon": {
"path": "/static/logo.jpg", // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo

                            },  
                            "authButton": {  
                                "normalColor": "#4D4CA8", // 授权按钮正常状态背景颜色 默认值:#3479f5  
                            },  
                            "otherLoginButton": {  
                                "visible": true, // 是否显示其他登录按钮,默认值:true  
                                "normalColor": "", // 其他登录按钮正常状态背景颜色 默认值:透明  
                                "highlightColor": "", // 其他登录按钮按下状态背景颜色 默认值:透明  
                                "textColor": "#656565", // 其他登录按钮文字颜色 默认值:#656565  
                                "title": "其他登录方式", // 其他登录方式按钮文字 默认值:“其他登录方式”  
                                "borderColor": "", //边框颜色 默认值:透明(仅iOS支持)  
                                "borderRadius": "0px" // 其他登录按钮圆角 默认值:"24px" (按钮高度的一半)  
                            },  
                        "buttons": { // 自定义页面下方按钮仅全屏模式生效(3.1.14+ 版本支持)  
                            "iconWidth": "45px", // 图标宽度(高度等比例缩放) 默认值:45px  
                            "list": [{  
                                    "provider": "weixin",  
                                    "iconPath": "/static/wx.png" // 图标路径仅支持本地图片  
                                },  

                                {  
                                    "provider": "phone",  
                                    "iconPath": "/static/phone.png" // 图标路径仅支持本地图片  
                                }  
                            ]  
                        }  
                        },  
                        success(res) { // 登录成功  

                            app.globalData.api.request('index/getUserPhone', {  
                                access_token: res.authResult.access_token,  
                                openid: res.authResult.openid  
                            }, 'POST', 'form').then((sub) => {  
                                if (sub.code == 0) {  
                                    uni.closeAuthView();  
                                    uni.setStorageSync('token', sub.data.token)  
                                    uni.setStorageSync('login', 0)  
                                    uni.switchTab({  
                                        url: '/pages/index/index'  
                                    })  
                                    app.globalData.show("登录成功!")  
                                } else {  

                                    app.globalData.show(sub.msg)  
                                }  
                            });  
                            uni.showLoading({  
                                title: "加载中...",  
                                mask: true  
                            })  
                            uni.showToast({  
                                title: res.authResult,  
                                icon: "none"  
                            })  
                        },  
                        fail(res) {  
                            console.log('自定义按钮被点击', res);  
                            // 在这里处理按钮点击事件  
                            switch (res.provider) {  
                                case 'weixin':  
                                    this.loginWx()  
                                    break;  
                                case 'phone':  
                                    uni.navigateTo({  
                                        url: '/pages/login/telLogin'  
                                    })  

                                    break;  
                            }  
                        }  
                    })  
                },  
                fail(res) {  
                    // 预登录失败  
                    // 不显示一键登录选项(或置灰)  
                    // 根据错误信息判断失败原因,如有需要可将错误提交给统计服务器  
                    console.log(res.errCode)  
                    console.log(res.errMsg)  
                }  
            })  
        },

操作步骤:

uni.preLogin({
provider: 'univerify',
success(e) { //预登录成功
console.log(e)
// 显示一键登录选项
uni.login({
provider: 'univerify',
univerifyStyle: {
"fullScreen": true, // 是否全屏显示,默认值: false
"icon": {
"path": "/static/logo.jpg", // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo

                            },  
                            "authButton": {  
                                "normalColor": "#4D4CA8", // 授权按钮正常状态背景颜色 默认值:#3479f5  
                            },  
                            "otherLoginButton": {  
                                "visible": true, // 是否显示其他登录按钮,默认值:true  
                                "normalColor": "", // 其他登录按钮正常状态背景颜色 默认值:透明  
                                "highlightColor": "", // 其他登录按钮按下状态背景颜色 默认值:透明  
                                "textColor": "#656565", // 其他登录按钮文字颜色 默认值:#656565  
                                "title": "其他登录方式", // 其他登录方式按钮文字 默认值:“其他登录方式”  
                                "borderColor": "", //边框颜色 默认值:透明(仅iOS支持)  
                                "borderRadius": "0px" // 其他登录按钮圆角 默认值:"24px" (按钮高度的一半)  
                            },  
                        "buttons": { // 自定义页面下方按钮仅全屏模式生效(3.1.14+ 版本支持)  
                            "iconWidth": "45px", // 图标宽度(高度等比例缩放) 默认值:45px  
                            "list": [{  
                                    "provider": "weixin",  
                                    "iconPath": "/static/wx.png" // 图标路径仅支持本地图片  
                                },  

                                {  
                                    "provider": "phone",  
                                    "iconPath": "/static/phone.png" // 图标路径仅支持本地图片  
                                }  
                            ]  
                        }  
                        },  
                        success(res) { // 登录成功  

                            app.globalData.api.request('index/getUserPhone', {  
                                access_token: res.authResult.access_token,  
                                openid: res.authResult.openid  
                            }, 'POST', 'form').then((sub) => {  
                                if (sub.code == 0) {  
                                    uni.closeAuthView();  
                                    uni.setStorageSync('token', sub.data.token)  
                                    uni.setStorageSync('login', 0)  
                                    uni.switchTab({  
                                        url: '/pages/index/index'  
                                    })  
                                    app.globalData.show("登录成功!")  
                                } else {  

                                    app.globalData.show(sub.msg)  
                                }  
                            });  
                            uni.showLoading({  
                                title: "加载中...",  
                                mask: true  
                            })  
                            uni.showToast({  
                                title: res.authResult,  
                                icon: "none"  
                            })  
                        },  
                        fail(res) {  
                            console.log('自定义按钮被点击', res);  
                            // 在这里处理按钮点击事件  
                            switch (res.provider) {  
                                case 'weixin':  
                                    this.loginWx()  
                                    break;  
                                case 'phone':  
                                    uni.navigateTo({  
                                        url: '/pages/login/telLogin'  
                                    })  
                                    univerifyManager.close()  
                                    break;  
                            }  
                        }  
                    })  
                },  
                fail(res) {  
                    // 预登录失败  
                    // 不显示一键登录选项(或置灰)  
                    // 根据错误信息判断失败原因,如有需要可将错误提交给统计服务器  
                    console.log(res.errCode)  
                    console.log(res.errMsg)  
                }  
            })  
        },

预期结果:

用户点击了其他登录方式或者顶部的删除按钮我自己控制后续逻辑页面跳转和弹窗关闭

实际结果:

在没有调用uni.closeAuthView()情况下授权弹窗也关闭了,不受控制

bug描述:

官方文档给的30002是点击了其他登录方式,30003用户关闭验证界面,通过uni.closeAuthView()来控制授权弹窗关闭和开启,现在问题是我没有使用uni.closeAuthView()授权弹窗也一样关闭了,比如用户点击了其他登录方式我自己控制后续逻辑页面跳转和弹窗关闭,

2025-07-09 09:58 负责人:DCloud_Android_YJC 分享
已邀请:
大太阳嗷嗷

大太阳嗷嗷 (作者) - eweaw

来人啊 来人啊

大太阳嗷嗷

大太阳嗷嗷 (作者) - eweaw

没人吗?bug都没人来回复?

DCloud_Android_YJC

DCloud_Android_YJC

https://uniapp.dcloud.net.cn/univerify.html#univerifymanager

  • 大太阳嗷嗷 (作者)

    使用全局 univerifyManager不也一样的吗?univerifyManager.onButtonsClick(callback)方法也只提供了自定义的按钮事件,全屏顶部的删除按钮和其他登录方式一样获取不到事件?这哪里解决了问题

    2025-07-09 14:11

  • DCloud_Android_YJC

    回复 大太阳嗷嗷: 抱歉,是我看错了,你期望的行为目前不支持,我们认为点击其他登录方式或者点击关闭按钮,登录页关闭是一个默认行为。

    2025-07-09 15:45

  • 大太阳嗷嗷 (作者)

    回复 DCloud_Android_YJC: 把这个事件放出来呗,让用户自行处理是关闭授权弹窗还是执行自己业务逻辑这样不是更适业务场景吗

    2025-07-09 16:09

  • DCloud_Android_YJC

    回复 大太阳嗷嗷: 可以去需求墙投票,https://vote.dcloud.net.cn/#/?name=uni-app。我们会根据情况进行排期。

    2025-07-09 16:49

要回复问题请先登录注册