s***@xapyrjkjyxgs.wecom.work
s***@xapyrjkjyxgs.wecom.work
  • 发布:2024-12-02 18:02
  • 更新:2024-12-02 18:02
  • 阅读:193

【报Bug】一键登录功能在iphone16pro上无法正常使用

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10 企业版 G

HBuilderX类型: 正式

HBuilderX版本号: 4.35

手机系统: iOS

手机系统版本号: iOS 18

手机厂商: 苹果

手机机型: iphone16pro

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

App下载地址或H5⽹址: https://apps.apple.com/cn/app/%E5%93%86%E4%BC%BD%E5%AE%A0/id6463855529

示例代码:

fastLoginFn() {
if (!this.checked) {
this.showPrivacyPopup = true;
return;
}
console.log("手机号一键登录")
var this_ = this
// 预登陆
uni.preLogin({
provider: "univerify",
success: () => {
uni.login({
provider: "univerify",
univerifyStyle: {
fullScreen: true, // 是否全屏显示,true表示全屏模式,false表示非全屏模式,默认值为false。
backgroundColor: "rgba(255,255,255,1)", // 授权页面背景颜色,默认值:#ffffff
phoneNum: {
color: "#000000", // 手机号文字颜色 默认值:#000000
fontSize: "22" // 手机号字体大小 默认值:18
},
slogan: {
color: "#707070", // slogan 字体颜色 默认值:#8a8b90
fontSize: "12"
},
icon: {
path: "static/login/login_icon.png", // 自定义显示在授权框中的logo,仅支持本地图片 默认显示App logo
width: "98px",
height: "56px",
},
authButton: {
normalColor: "#FE006B", // 授权按钮正常状态背景颜色 默认值:#3479f5
highlightColor: "#FF5F69", // 授权按钮按下状态背景颜色 默认值:#2861c5(仅ios支持)
disabledColor: "#BDBDBD", // 授权按钮不可点击时背景颜色 默认值:#73aaf5(仅ios支持)
textColor: "#ffffff", // 授权按钮文字颜色 默认值:#ffffff
title: "本机号码一键登录" // 授权按钮文案 默认值:“本机号码一键登录”
},
otherLoginButton: {
visible: "true", // 是否显示其他登录按钮,默认值:true"visible": "true", // 是否显示其他登录按钮,默认值:true
textColor: "#FE006B", // 其他登录按钮文字颜色 默认值:#000000
title: "其他手机号", // 其他登录方式按钮文字 默认值:“其他登录方式”"borderWidth": "1px", // 边框宽度 默认值:1px(仅ios支持)
borderColor: "#FE006B", //边框颜色 默认值: #c5c5c5(仅ios支持)
borderWidth: "2px" // 边框宽度 默认值:1px(仅ios支持)
},
privacyTerms: {
defaultCheckBoxState: "false", // 条款勾选框初始状态 默认值: true
textColor: "#707070", // 文字颜色 默认值:#8a8b90
termsColor: "#037BFF", // 协议文字颜色 默认值: #1d4788
prefix: "我已阅读并同意", // 条款前的文案 默认值:“我已阅读并同意”
suffix: "并使用本机号码登录", // 条款后的文案 默认值:“并使用本机号码登录”
fontSize: "14", // 字体大小 默认值:12,
uncheckedImage: "static/login/icon_check_login_bf.png", // 可选 条款勾选框未选中状态图片(仅支持本地图片 建议尺寸 24x24px)(3.2.0+ 版本支持)
checkedImage: "static/login/checked_icon.png", // 可选 条款勾选框选中状态图片(仅支持本地图片 建议尺寸24x24px)(3.2.0+ 版本支持)
checkBoxSize: "14", // 可选 勾选框大小
privacyItems: [
// 自定义协议条款,最大支持2个,需要同时设置url和title. 否则不生效
// {
// url: "https://pinying.com.cn/serviceAgreement.html",
// title: "用户协议"
// },
// {
// url: "https://pinying.com.cn/privacy.html",
// title: "隐私政策"
// }
]
}
},
success: async (res) => {
console.log("一键登录调用返回的数据", res)
let data = {
accessToken: res.authResult.access_token, // 客户端一键登录接口返回的accesstoken
openId: res.authResult.openid // 客户端一键登录接口返回的openid
}
const login = await this
.$api.fastLogin(data)
console.log('login',login)
if(login.code === 20000){
let userInfo = login.data;
// #ifdef APP-PLUS
this.pushConnect(); //推送绑定id
// #endif
this
.onLoginSuccess(userInfo);
setTimeout(() => {
uni.closeAuthView() //关闭一键登录弹出窗口
}, 300)
}else{
uni.showToast({
title: "一键登录失败请选择其他登录方式",
icon: "none",
duration: 5000
})
uni.navigateTo({
url: '/pages/login/newLogin'
})
setTimeout(() => {
uni.closeAuthView() //关闭一键登录弹出窗口
}, 500)
}
// uniCloud.callFunction({
// name: "getPhoneNumber", // 云函数名称
// data: {
// access_token: res.authResult.access_token, // 客户端一键登录接口返回的accesstoken
// openid: res.authResult.openid // 客户端一键登录接口返回的openid
// }
// }).then((dataRes) => {
// console.log("云函数返回的参数", dataRes)
// let phone = dataRes.result.data.phoneNumber
// this.userPhone = dataRes.result.data.phoneNumber
// // 这里进行登录操作
// // this.loginFast({
// // phone
// // })
// }).catch((err) => {
// console.log("云函数报错", err)
// uni.showToast({
// title: err.errMsg,
// icon: "none"
// })
// this
= this
// setTimeout(() => {
// uni.closeAuthView() //关闭一键登录弹出窗口
// }, 500)
// })
// uni.showToast({
// title: res.authResult,
// icon: "none"
// })
// console.log("云函数调用返回数据", dataRes)
},
fail(err) {
// 登录失败或者点击其他登录方式,自定义按钮等
// console.log("一键登录uni.login失败", err)
// uni.showToast({
// title: err.errMsg || err.metadata?.resultDesc,
// icon: "none"
// })
if (err.errCode == 30002) {
console.log('其他登录方式');
uni.navigateTo({
url: '/pages/login/newLogin'
})
}
setTimeout(() => {
uni.closeAuthView() //关闭一键登录弹出窗口

                            }, 500)  
                        }  
                    })  
                },  
                fail(res) {  
                    console.log("一键登录uni.preLogin失败", res)  
                    if (res.errMsg != "login:ok") {  
                        // 这里注意有个小坑: 不同运营商,返回的报错字段不同, 经过测试, 以下几乎包含了三大运营商报错字段  
                        uni.showToast({  
                            title: "请检查是否插入有效sim卡及开启蜂窝数据网络",  
                            icon: "none"  
                        })  
                    }  
                    //如果手机没有插入有效的sim卡,或者手机蜂窝数据网络关闭,  
                    //都有可能造成预登录校验失败。  
                    setTimeout(() => {  
                        // 预登陆失败, 做其他操作  
                        uni.navigateTo({  
                            url: '/pages/login/newLogin'  
                        })  
                    }, 200)  
                }  
            })  
        }

操作步骤:

一键登录按钮事件可以正常触发,预登录没有回调

预期结果:

正常登录或者拿到回调

实际结果:

失败和成功回调都没有

bug描述:

iphone16pro一键登录,预登录没有回调,运营商是电信的,其他型号手机正常

2024-12-02 18:02 负责人:DCloud_iOS_WZT 分享
已邀请:

要回复问题请先登录注册