1***@qq.com
1***@qq.com
  • 发布:2023-02-09 14:13
  • 更新:2023-02-09 14:23
  • 阅读:221

uni使用Uni.login一键手机登录,一直重复加载APP,导致登录弹窗重复弹出

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 3.7.0

手机系统: Android

手机系统版本号: Android 12

手机厂商: 华为

手机机型: HONOR 50 SE

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
{  
checkLogin() {  
                var _this = this;  
                uni.preLogin({  
                    provider: 'univerify',  
                    success() { //预登录成功  
                        // 显示一键登录选项  
                        _this.openLoginPopup();  
                    },  
                    fail(res) { // 预登录失败  
                        // 不显示一键登录选项(或置灰)  
                        // 根据错误信息判断失败原因,如有需要可将错误提交给统计服务器   
                        console.log(res.errCode)  
                        console.log(res.errMsg)  
                    }  
                })  
            },  
            openLoginPopup() {  
                var _this = this;  
                uni.login({  
                    provider: 'univerify',  
                    fullScreen: "true",  
                    univerifyStyle: { // 自定义登录框样式  
                        //参考`univerifyStyle 数据结构  
                        "icon": {  
                            "path": "../../static/logo.png" // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo     
                        },  
                        "authButton": {  
                            "normalColor": "#fe4d6a", // 授权按钮正常状态背景颜色 默认值:#3479f5     
                            "textColor": "#ffffff", // 授权按钮文字颜色 默认值:#ffffff    
                            "title": "本机号码一键登录", // 授权按钮文案 默认值:“本机号码一键登录”    
                            "borderRadius": "24px" // 授权按钮圆角 默认值:"24px" (按钮高度的一半)  
                        },  
                        "privacyTerms": {  
                            "defaultCheckBoxState": true, // 条款勾选框初始状态 默认值: true  
                            "uncheckedImage": "", // 可选 条款勾选框未选中状态图片(仅支持本地图片 建议尺寸 24x24px)(3.2.0+ 版本支持)     
                            "checkedImage": "", // 可选 条款勾选框选中状态图片(仅支持本地图片 建议尺寸24x24px)(3.2.0+ 版本支持)     
                            "checkBoxSize": 12, // 可选 条款勾选框大小,仅android支持  
                            "textColor": "#BBBBBB", // 文字颜色 默认值:#BBBBBB    
                            "termsColor": "#fe4d6a", //  协议文字颜色 默认值: #5496E3    
                            "prefix": "我已阅读并同意", // 条款前的文案 默认值:“我已阅读并同意”    
                            "suffix": "并使用本机号码登录", // 条款后的文案 默认值:“并使用本机号码登录”    
                            "privacyItems": [ // 自定义协议条款,最大支持2个,需要同时设置url和title. 否则不生效    
                                {  
                                    "url": "https://", // 点击跳转的协议详情页面    
                                    "title": "用户协议" // 协议名称    
                                },  
                                {  
                                    "url": "https://", // 点击跳转的协议详情页面    
                                    "title": "隐私协议" // 协议名称    
                                }  
                            ]  
                        },  
                    },  
                    success(res) { // 登录成功  
                        _this.form.openid = res.authResult.openid;  
                        _this.form.access_token = res.authResult.access_token;  
                        _this.loginPhone();  
                    },  
                    fail(res) { // 登录失败  
                        console.log(res);  
                    }  
                })  
            },  
}

操作步骤:
{checkLogin() {  
                var _this = this;  
                uni.preLogin({  
                    provider: 'univerify',  
                    success() { //预登录成功  
                        // 显示一键登录选项  
                        _this.openLoginPopup();  
                    },  
                    fail(res) { // 预登录失败  
                        // 不显示一键登录选项(或置灰)  
                        // 根据错误信息判断失败原因,如有需要可将错误提交给统计服务器   
                        console.log(res.errCode)  
                        console.log(res.errMsg)  
                    }  
                })  
            },  
            openLoginPopup() {  
                var _this = this;  
                uni.login({  
                    provider: 'univerify',  
                    fullScreen: "true",  
                    univerifyStyle: { // 自定义登录框样式  
                        //参考`univerifyStyle 数据结构  
                        "icon": {  
                            "path": "../../static/logo.png" // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo     
                        },  
                        "authButton": {  
                            "normalColor": "#fe4d6a", // 授权按钮正常状态背景颜色 默认值:#3479f5     
                            "textColor": "#ffffff", // 授权按钮文字颜色 默认值:#ffffff    
                            "title": "本机号码一键登录", // 授权按钮文案 默认值:“本机号码一键登录”    
                            "borderRadius": "24px" // 授权按钮圆角 默认值:"24px" (按钮高度的一半)  
                        },  
                        "privacyTerms": {  
                            "defaultCheckBoxState": true, // 条款勾选框初始状态 默认值: true  
                            "uncheckedImage": "", // 可选 条款勾选框未选中状态图片(仅支持本地图片 建议尺寸 24x24px)(3.2.0+ 版本支持)     
                            "checkedImage": "", // 可选 条款勾选框选中状态图片(仅支持本地图片 建议尺寸24x24px)(3.2.0+ 版本支持)     
                            "checkBoxSize": 12, // 可选 条款勾选框大小,仅android支持  
                            "textColor": "#BBBBBB", // 文字颜色 默认值:#BBBBBB    
                            "termsColor": "#fe4d6a", //  协议文字颜色 默认值: #5496E3    
                            "prefix": "我已阅读并同意", // 条款前的文案 默认值:“我已阅读并同意”    
                            "suffix": "并使用本机号码登录", // 条款后的文案 默认值:“并使用本机号码登录”    
                            "privacyItems": [ // 自定义协议条款,最大支持2个,需要同时设置url和title. 否则不生效    
                                {  
                                    "url": "https://", // 点击跳转的协议详情页面    
                                    "title": "用户协议" // 协议名称    
                                },  
                                {  
                                    "url": "https://", // 点击跳转的协议详情页面    
                                    "title": "隐私协议" // 协议名称    
                                }  
                            ]  
                        },  
                    },  
                    success(res) { // 登录成功  
                        _this.form.openid = res.authResult.openid;  
                        _this.form.access_token = res.authResult.access_token;  
                        _this.loginPhone();  
                    },  
                    fail(res) { // 登录失败  
                        console.log(res);  
                    }  
                })  
            },

预期结果:
{checkLogin() {  
                var _this = this;  
                uni.preLogin({  
                    provider: 'univerify',  
                    success() { //预登录成功  
                        // 显示一键登录选项  
                        _this.openLoginPopup();  
                    },  
                    fail(res) { // 预登录失败  
                        // 不显示一键登录选项(或置灰)  
                        // 根据错误信息判断失败原因,如有需要可将错误提交给统计服务器   
                        console.log(res.errCode)  
                        console.log(res.errMsg)  
                    }  
                })  
            },  
            openLoginPopup() {  
                var _this = this;  
                uni.login({  
                    provider: 'univerify',  
                    fullScreen: "true",  
                    univerifyStyle: { // 自定义登录框样式  
                        //参考`univerifyStyle 数据结构  
                        "icon": {  
                            "path": "../../static/logo.png" // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo     
                        },  
                        "authButton": {  
                            "normalColor": "#fe4d6a", // 授权按钮正常状态背景颜色 默认值:#3479f5     
                            "textColor": "#ffffff", // 授权按钮文字颜色 默认值:#ffffff    
                            "title": "本机号码一键登录", // 授权按钮文案 默认值:“本机号码一键登录”    
                            "borderRadius": "24px" // 授权按钮圆角 默认值:"24px" (按钮高度的一半)  
                        },  
                        "privacyTerms": {  
                            "defaultCheckBoxState": true, // 条款勾选框初始状态 默认值: true  
                            "uncheckedImage": "", // 可选 条款勾选框未选中状态图片(仅支持本地图片 建议尺寸 24x24px)(3.2.0+ 版本支持)     
                            "checkedImage": "", // 可选 条款勾选框选中状态图片(仅支持本地图片 建议尺寸24x24px)(3.2.0+ 版本支持)     
                            "checkBoxSize": 12, // 可选 条款勾选框大小,仅android支持  
                            "textColor": "#BBBBBB", // 文字颜色 默认值:#BBBBBB    
                            "termsColor": "#fe4d6a", //  协议文字颜色 默认值: #5496E3    
                            "prefix": "我已阅读并同意", // 条款前的文案 默认值:“我已阅读并同意”    
                            "suffix": "并使用本机号码登录", // 条款后的文案 默认值:“并使用本机号码登录”    
                            "privacyItems": [ // 自定义协议条款,最大支持2个,需要同时设置url和title. 否则不生效    
                                {  
                                    "url": "https://", // 点击跳转的协议详情页面    
                                    "title": "用户协议" // 协议名称    
                                },  
                                {  
                                    "url": "https://", // 点击跳转的协议详情页面    
                                    "title": "隐私协议" // 协议名称    
                                }  
                            ]  
                        },  
                    },  
                    success(res) { // 登录成功  
                        _this.form.openid = res.authResult.openid;  
                        _this.form.access_token = res.authResult.access_token;  
                        _this.loginPhone();  
                    },  
                    fail(res) { // 登录失败  
                        console.log(res);  
                    }  
                })  
            },

实际结果:
{checkLogin() {  
                var _this = this;  
                uni.preLogin({  
                    provider: 'univerify',  
                    success() { //预登录成功  
                        // 显示一键登录选项  
                        _this.openLoginPopup();  
                    },  
                    fail(res) { // 预登录失败  
                        // 不显示一键登录选项(或置灰)  
                        // 根据错误信息判断失败原因,如有需要可将错误提交给统计服务器   
                        console.log(res.errCode)  
                        console.log(res.errMsg)  
                    }  
                })  
            },  
            openLoginPopup() {  
                var _this = this;  
                uni.login({  
                    provider: 'univerify',  
                    fullScreen: "true",  
                    univerifyStyle: { // 自定义登录框样式  
                        //参考`univerifyStyle 数据结构  
                        "icon": {  
                            "path": "../../static/logo.png" // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo     
                        },  
                        "authButton": {  
                            "normalColor": "#fe4d6a", // 授权按钮正常状态背景颜色 默认值:#3479f5     
                            "textColor": "#ffffff", // 授权按钮文字颜色 默认值:#ffffff    
                            "title": "本机号码一键登录", // 授权按钮文案 默认值:“本机号码一键登录”    
                            "borderRadius": "24px" // 授权按钮圆角 默认值:"24px" (按钮高度的一半)  
                        },  
                        "privacyTerms": {  
                            "defaultCheckBoxState": true, // 条款勾选框初始状态 默认值: true  
                            "uncheckedImage": "", // 可选 条款勾选框未选中状态图片(仅支持本地图片 建议尺寸 24x24px)(3.2.0+ 版本支持)     
                            "checkedImage": "", // 可选 条款勾选框选中状态图片(仅支持本地图片 建议尺寸24x24px)(3.2.0+ 版本支持)     
                            "checkBoxSize": 12, // 可选 条款勾选框大小,仅android支持  
                            "textColor": "#BBBBBB", // 文字颜色 默认值:#BBBBBB    
                            "termsColor": "#fe4d6a", //  协议文字颜色 默认值: #5496E3    
                            "prefix": "我已阅读并同意", // 条款前的文案 默认值:“我已阅读并同意”    
                            "suffix": "并使用本机号码登录", // 条款后的文案 默认值:“并使用本机号码登录”    
                            "privacyItems": [ // 自定义协议条款,最大支持2个,需要同时设置url和title. 否则不生效    
                                {  
                                    "url": "https://", // 点击跳转的协议详情页面    
                                    "title": "用户协议" // 协议名称    
                                },  
                                {  
                                    "url": "https://", // 点击跳转的协议详情页面    
                                    "title": "隐私协议" // 协议名称    
                                }  
                            ]  
                        },  
                    },  
                    success(res) { // 登录成功  
                        _this.form.openid = res.authResult.openid;  
                        _this.form.access_token = res.authResult.access_token;  
                        _this.loginPhone();  
                    },  
                    fail(res) { // 登录失败  
                        console.log(res);  
                    }  
                })  
            },

bug描述:

uni使用Uni.login一键手机登录,关闭弹窗后会一直重复加载APP,导致登录弹窗重复弹出

2023-02-09 14:13 负责人:无 分享
已邀请:
亦春亦秋

亦春亦秋 - 用爱发电

发完贴,邀请一下人来回答,哈哈哈

  • 1***@qq.com (作者)

    邀请谁啊。。

    2023-02-09 14:17

  • 亦春亦秋

    回复 1***@qq.com: 帮你邀请过了,剩下的就是等了

    2023-02-09 14:21

亦春亦秋

亦春亦秋 - 用爱发电

把你这个页面的代码,打包上传附件

1***@qq.com

1***@qq.com (作者)

页面源码

  • DCloud_Android_YJC

    请提供一个可复现的demo工程

    2023-02-09 18:22

  • 1***@qq.com (作者)

    回复 DCloud_Android_YJC: 我已经解决了,但是这个问题是有的,关闭弹窗后,当前页面会重新进入渲染onload等方法

    2023-02-27 15:04

要回复问题请先登录注册