一键登录在uni-app中显示私网IP无效

一键登录在uni-app中显示私网IP无效

开发环境 版本号 项目创建方式
Mac 14.5 (23F79) HBuilderX
# 操作步骤:

1. 开启wifi和流量正常登录;
2. 然后仅关闭数据流量并退出登录;
3. 然后再开启数据流量去登录,此时(wifi和流量都是开启状态的)发现无法登录并报“私网IP无效”的错误提示

# 预期结果:

一键登录

# 实际结果:

提示私网ip无效

# bug描述:

目前在其他机型正常  
一键登录在mate40pro、鸿蒙4.2.0.138版本,提示私网IP无效  

1. 开启wifi和流量正常登录;
2. 然后仅关闭数据流量并退出登录;
3. 然后再开启数据流量去登录,此时(wifi和流量都是开启状态的)发现无法登录并报“私网IP无效”的错误提示

[http://cdn.tuibake.com/1754404430000.apk](http://cdn.tuibake.com/1754404430000.apk)

更多关于一键登录在uni-app中显示私网IP无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

当时开启了华为的多屏协同

更多关于一键登录在uni-app中显示私网IP无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这个报错是业务方返回的,不是 uniapp 返回的吧,检查下对应的妨定义,切换 wifi 和 数据会导致 ip 发生变化

这是一个典型的网络环境切换导致的一键登录SDK内部状态异常问题。在华为鸿蒙系统上,当WiFi和移动数据同时开启时,系统默认优先使用WiFi网络。你描述的操作步骤导致SDK在初始化时可能绑定到了错误的网络接口或IP地址。

核心原因是:一键登录SDK在初始化时捕获了私网IP(通常是WiFi分配的192.168.x.x),但在后续网络切换过程中,SDK未能及时更新有效的公网IP地址,而运营商认证需要公网IP才能完成。

解决方案:

  1. 在调用一键登录前,强制检查当前网络环境,确保使用移动数据网络
  2. 在登录失败回调中,主动调用uni.closeAuthPage()关闭登录页面,然后重新初始化一键登录
  3. 考虑在网络状态变化时(如监听uni.onNetworkStatusChange),重新初始化一键登录模块

代码层面可以这样处理:

// 监听网络状态变化
uni.onNetworkStatusChange((res) => {
    if (res.isConnected) {
        // 网络恢复时重新初始化登录模块
        initUniLogin();
    }
});

// 登录失败时
fail: (res) => {
    if (res.code === '私网IP无效') {
        uni.closeAuthPage();
        // 延迟重新初始化
        setTimeout(() => {
            initUniLogin();
        }, 1000);
    }
}
回到顶部