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
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
方法,该方法首先设置isLoading
为true
以显示转圈圈,然后调用第三方SDK的登录方法。我们使用了async/await
来处理异步操作,并在try/catch
块中捕获可能的异常。无论登录成功还是失败,或者捕获到异常,我们都会在finally
块中将isLoading
设置为false
以停止转圈圈。
如果在实际应用中,仍然遇到卡在转圈圈没走回调的问题,可能需要检查以下几点:
- 网络请求:确保网络请求能够正常发出并接收到响应。
- SDK版本:检查所使用的SDK版本是否为最新,以及是否存在已知的bug。
- 回调机制:确保SDK的回调机制正常工作,并且回调方法被正确注册和调用。
- 日志输出:增加更多的日志输出,以帮助定位问题发生的具体位置。