uni-app 云对象抛出`uni-id-token-expired`、`uni-id-check-token-failed`错误码不触发客户端跳转登录页面

uni-app 云对象抛出uni-id-token-expireduni-id-check-token-failed错误码不触发客户端跳转登录页面

操作步骤:

  • 抛出TOKEN_INVALID_TOKEN_EXPIRED错误码就可以跳转

预期结果:

  • 可以跳转

实际结果:

  • 不跳转

bug描述:

  • 云对象抛出uni-id-token-expireduni-id-check-token-failed错误码,不触发客户端跳转登陆页面
1 回复

更多关于uni-app 云对象抛出`uni-id-token-expired`、`uni-id-check-token-failed`错误码不触发客户端跳转登录页面的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 中使用云对象时,如果遇到 uni-id-token-expireduni-id-check-token-failed 错误码,通常表示用户的登录态已经失效或校验失败。这种情况下,通常需要在客户端进行跳转到登录页面的操作。如果这些错误码没有触发客户端跳转登录页面,可能是以下原因导致的:

1. 未正确处理云对象返回的错误

在调用云对象时,需要对返回的错误进行判断和处理。如果未正确处理错误,客户端无法感知到 uni-id-token-expireduni-id-check-token-failed 错误码,也就不会触发跳转登录页面的操作。

解决方案: 在调用云对象的地方,检查返回的错误码,并根据错误码进行相应的处理。

uniCloud.callFunction({
    name: 'yourCloudFunctionName',
    data: {
        // 你的参数
    }
}).then(res => {
    // 处理成功结果
}).catch(err => {
    if (err.code === 'uni-id-token-expired' || err.code === 'uni-id-check-token-failed') {
        // 跳转到登录页面
        uni.navigateTo({
            url: '/pages/login/login'
        });
    } else {
        // 处理其他错误
        console.error(err);
    }
});

2. 未在云对象中正确抛出错误

在云对象中,如果未正确抛出 uni-id-token-expireduni-id-check-token-failed 错误码,客户端也无法收到相应的错误信息。

解决方案: 在云对象中,确保在检测到登录态失效时,正确抛出相应的错误码。

module.exports = {
    async yourMethod() {
        try {
            // 校验登录态
            const result = await uniID.checkToken(event.uniIdToken);
            if (result.code) {
                throw result; // 如果校验失败,抛出错误
            }
            // 其他业务逻辑
        } catch (error) {
            throw error; // 抛出错误
        }
    }
}

3. 全局错误处理未覆盖云对象调用

如果你在应用中使用了全局错误处理机制,但没有覆盖到云对象调用的错误处理,可能会导致这些错误码未被捕获。

解决方案: 确保全局错误处理机制能够捕获到云对象调用的错误。

uni.onError = function (error) {
    if (error.code === 'uni-id-token-expired' || error.code === 'uni-id-check-token-failed') {
        // 跳转到登录页面
        uni.navigateTo({
            url: '/pages/login/login'
        });
    } else {
        // 处理其他错误
        console.error(error);
    }
};

4. 客户端未监听全局错误事件

如果客户端没有监听全局错误事件,可能会导致无法捕获到云对象抛出的错误。

解决方案: 在客户端监听全局错误事件,并根据错误码进行相应的处理。

uni.$on('uni-id-token-expired', () => {
    uni.navigateTo({
        url: '/pages/login/login'
    });
});

uni.$on('uni-id-check-token-failed', () => {
    uni.navigateTo({
        url: '/pages/login/login'
    });
});
回到顶部