uni-app 一键登录云函数验证报获取不到手机号

uni-app 一键登录云函数验证报获取不到手机号 产品分类:uniCloud/App

开发环境 版本号 项目创建方式

示例代码:

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,
                    backgroundColor: "rgba(255,255,255,1)",
                    phoneNum: {
                        color: "#000000",
                        fontSize: "22"
                    },
                    slogan: {
                        color: "#707070",
                        fontSize: "12"
                    },
                    icon: {
                        path: "static/login/login_icon.png",
                        width: "98px",
                        height: "56px",
                    },
                    authButton: {
                        normalColor: "#FE006B",
                        highlightColor: "#FF5F69",
                        disabledColor: "#BDBDBD",
                        textColor: "#ffffff",
                        title: "本机号码一键登录"
                    },
                    otherLoginButton: {
                        visible: "true",
                        textColor: "#FE006B",
                        title: "其他手机号",
                        borderWidth: "1px",
                        borderColor: "#FE006B",
                        borderWidth: "2px"
                    },
                    privacyTerms: {
                        defaultCheckBoxState: "false",
                        textColor: "#707070",
                        termsColor: "#037BFF",
                        prefix: "我已阅读并同意",
                        suffix: "并使用本机号码登录",
                        fontSize: "14",
                        uncheckedImage: "static/login/icon_check_login_bf.png",
                        checkedImage: "static/login/checked_icon.png",
                        checkBoxSize: "14",
                        privacyItems: [
                            // { url: "https://app.chongzhigu.com/serviceAgreement.html", title: "用户协议" },
                            // { url: "https://app.chongzhigu.com/privacy.html", title: "隐私政策" }
                        ]
                    }
                },
                success: async (res) => {
                    console.log("一键登录调用返回的数据", res)
                    let data = {
                        isNewApp: 'chongzhigu1',
                        accessToken: res.authResult.access_token,
                        openId: res.authResult.openid
                    }
                    console.log('一键登录', data)
                    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)
                    }
                },
                fail(err) {
                    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"
                })
            }
            setTimeout(() => {
                uni.navigateTo({
                    url: '/pages/login/newLogin'
                })
            }, 200)
        }
    })
},
fail(res) {
    console.log("一键登录uni.preLogin失败", res)
    if (res.errMsg != "login:ok") {
        uni.showToast({
            title: "请检查是否插入有效sim卡及开启蜂窝数据网络",
            icon: "none"
        })
    }
    setTimeout(() => {
        uni.navigateTo({
            url: '/pages/login/newLogin'
        })
    }, 200)
}

操作步骤:

一键登录,后端云函数获取手机号异常

预期结果:

一键登录,后端云函数调用正常获取手机号

实际结果:

一键登录,后端云函数调用获取不到手机号

bug描述:

手机上正常获取到了运营商回调,后端服务调用云函数报{"success":false,"error":{"code":"FunctionBizError","message":"5000:获取手机号失败,请稍后重试。"}},开发测试前几天正常的,上线运行了2天之后突然部分手机号无法正常登录,目前已知(移动)


更多关于uni-app 一键登录云函数验证报获取不到手机号的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

根据问题描述和知识库内容,该问题属于一键登录获取手机号失败,错误码5000表示"取号失败,请检查SIM卡是否停机欠费;token是否过期"。
可能原因及解决方案:

预登录token过期:预登录有效期仅10分钟,超过时间需重新预登录。确保uni.preLogin成功后立即调用uni.login,不要间隔过久
移动运营商限制:部分移动号段可能受运营商策略影响,特别是虚拟运营商号段
应用配置问题:检查uni-app后台一键登录配置是否完整且已通过审核
云函数实现问题:应直接在uniCloud云函数中换取手机号,而非通过自定义后端。参考一键登录文档

特别注意:

双卡手机以开启数据流量的SIM卡进行认证
错误码40101(移动-源IP鉴权失败)需检查手机卡类型和飞行模式状态
开发时测试正常但上线后出现问题,通常是运营商策略调整导致

建议操作:

确认云函数正确调用了uniCloud的获取手机号接口
检查uni-app应用ID是否已正确配置并审核通过
对于持续失败的情况,联系DCloud官方支持并提供具体设备型号和运营商信息

一键登录完整文档 内容为 AI 生成,仅供参考

更多关于uni-app 一键登录云函数验证报获取不到手机号的实战教程也可以访问 https://www.itying.com/category-93-b0.html


手机号没有欠费,移动流量正常,问题就是调用云函数那边返回不了手机号,手机端是正常返回登录令牌的!!!

私聊发我下openid

回到顶部