uni-app 一键登录功能卡在转圈圈没走回调

uni-app 一键登录功能卡在转圈圈没走回调

产品分类

uniapp/App

测试过的手机

苹果,安卓都出现过

示例代码

preLogin(){
// #ifdef APP-PLUS
uni.preLogin({
    provider: 'univerify',
    success:() => {  //预登录成功
        //继续走一键登录
        this.onlyKeyLogin()
    },
    fail:(res) => {  // 预登录失败  
    }  
})
// #endif
},
onlyKeyLogin() {
    // 显示一键登录选项
    uni.login({
        provider: 'univerify',
        univerifyStyle: {
            fullScreen: true
        },
        success:(res) => { // 登录成功  
            console.log("res====================" + JSON.stringify(res));  
        },  
        fail: (error) => { // 登录失败  
            if (error.code == 30002 || error.code == 30003) {     //切换其他方式登录,关闭按钮  
                uni.closeAuthView()  
            } else {  
                console.log("error: " + JSON.stringify(error));  
                uni.showToast({  
                    title : '一键登录失败', icon: "none"  
                })  
                uni.closeAuthView()  
            }  
        }  
    })  
}

操作步骤

preLogin(){
// #ifdef APP-PLUS
uni.preLogin({
    provider: 'univerify',
    success:() => {  //预登录成功
        //继续走一键登录
        this.onlyKeyLogin()
    },
    fail:(res) => {  // 预登录失败  
    }  
})
// #endif
},
onlyKeyLogin() {
    // 显示一键登录选项
    uni.login({
        provider: 'univerify',
        univerifyStyle: {
            fullScreen: true
        },
        success:(res) => { // 登录成功  
            console.log("res====================" + JSON.stringify(res));  
        },  
        fail: (error) => { // 登录失败  
            if (error.code == 30002 || error.code == 30003) {     //切换其他方式登录,关闭按钮  
                uni.closeAuthView()  
            } else {  
                console.log("error: " + JSON.stringify(error));  
                uni.showToast({  
                    title : '一键登录失败', icon: "none"  
                })  
                uni.closeAuthView()  
            }  
        }  
    })  
}

预期结果

拉起一键登录界面后,不显示转圈圈,用户可以点击界面上的登录按钮,与右上角关闭按钮;

实际结果

卡在转圈圈界面,无法点击界面上任何东西

bug描述

预登录成功后,走了uni.login,成功弹出一键登录的界面了,但是界面会出现一个转圈圈,用户在界面上操作无法点击本机号码一键登录,也无法关闭。偶发性的,大部分用户都是正常的,但是有少部分用户出现这种情况,问了个推的一键登录技术人员,排查了日志与函数情况也正常,按他的意思,好像没回调;(本机号码一键登录 用户不是点了界面中 本机号码一键登录 这个才出现转圈圈,而是这个一键登录界面拉起了就出现转圈圈,然后就卡在这)

开发环境信息

项目创建方式 HBuilderX
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 64
HBuilderX类型 正式
HBuilderX版本号 4.32
手机系统 全部
手机厂商 华为
页面类型 vue
vue版本 vue2
打包方式 云端

更多关于uni-app 一键登录功能卡在转圈圈没走回调的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

HBuilderX版本号 是4. 28 , 刚刚选错了

更多关于uni-app 一键登录功能卡在转圈圈没走回调的实战教程也可以访问 https://www.itying.com/category-93-b0.html


请问解决了吗

在uni-app中实现一键登录功能时,如果卡在转圈圈没走回调,通常可能是由多种原因导致的,包括但不限于网络请求问题、第三方SDK的回调未触发、或者是代码逻辑错误。以下是一个简化的示例代码,展示如何集成一键登录功能,并处理可能的回调问题。假设你使用的是某个第三方的一键登录SDK(具体SDK名称和调用方式需要根据实际情况替换)。

// 假设一键登录SDK已经通过npm安装并引入
import OneKeyLoginSDK from 'one-key-login-sdk';

export default {
  data() {
    return {
      isLoading: false, // 控制转圈圈的显示状态
    };
  },
  methods: {
    async oneKeyLogin() {
      this.isLoading = true; // 开始转圈圈

      try {
        // 调用第三方SDK的一键登录方法
        const result = await OneKeyLoginSDK.login({
          // 这里填写SDK需要的参数,如appId等
          appId: 'your_app_id',
          // 其他参数...
        });

        // 处理登录成功的结果
        if (result.success) {
          console.log('登录成功', result.data);
          // 更新用户信息,跳转页面等操作
          // this.$router.push({ name: 'home' });
        } else {
          console.error('登录失败', result.error);
        }
      } catch (error) {
        // 捕获异步操作中的异常
        console.error('一键登录发生错误', error);
      } finally {
        this.isLoading = false; // 无论成功还是失败,都停止转圈圈
      }
    },
  },
  template: `
    <view>
      <button @click="oneKeyLogin" :loading="isLoading">
        一键登录
      </button>
    </view>
  `,
};

在上述代码中,我们定义了一个oneKeyLogin方法,该方法首先设置isLoadingtrue以显示转圈圈,然后调用第三方SDK的登录方法。我们使用了async/await来处理异步操作,并在try/catch块中捕获可能的异常。无论登录成功还是失败,或者捕获到异常,我们都会在finally块中将isLoading设置为false以停止转圈圈。

如果在实际应用中,仍然遇到卡在转圈圈没走回调的问题,可能需要检查以下几点:

  1. 网络请求:确保网络请求能够正常发出并接收到响应。
  2. SDK版本:检查所使用的SDK版本是否为最新,以及是否存在已知的bug。
  3. 回调机制:确保SDK的回调机制正常工作,并且回调方法被正确注册和调用。
  4. 日志输出:增加更多的日志输出,以帮助定位问题发生的具体位置。
回到顶部