{“msg“:“请求访问:/xxx-api/xxx/xxx/list,认证失败,无法访问系统资源“,“code“:401}
钉钉小程序对接若依后台时访问报错如下即可开始后续开发流程{msg:请求访问/xxx-api/xxx/xxx/list认证失败无法访问系统资源,code:401}浏览器返回code:401 认证失败说明两点网络完全通了地址、端口、上下文/xxx-api全部正确后端能收到请求并返回校验结果工单接口需要携带Authorization: Bearer token请求头浏览器直接访问没带 token所以 401小程序现在的问题是免登流程没拿到有效 token根本没走到工单请求。一、401 含义与流程梳理完整执行链路小程序打开 → 调用dd.getAuthCode获取钉钉授权码请求/xxx-api/xxx/xxx/login提交 authCode后端返回 token把 token 存入缓存再携带Authorization头部请求/smz/work/list你现在浏览器直接访问工单接口没带 token必然 401小程序卡在第 1/2 步免登环节没拿到 token不会发起工单请求后端看不到工单接口日志。二、模拟器核心坑最主要原因钉钉开发者工具模拟器中dd.getAuthCode无法获取有效 authCode会直接进入 fail 回调Promise 不会 resolve后续工单请求永远不执行。解决必须用手机真机扫码预览调试右上角点「预览」生成二维码手机连接你电脑同 WiFi192.168.x.*钉钉扫码打开小程序真机环境才能正常拿到 authCode、请求登录接口、生成 token再拉取工单。三、检查免登接口逻辑utils/login.js1. 免登接口地址核对url: http://192.168.x.xxx:xxxx/dev-xxx/xxx/xxx/login浏览器访问这个地址测试http://192.168.x.xx:xxxx/dev-xxx/xxx/xxx/loginPOST 方式传{authCode: 随便字符串}正常会返回登录失败 / 有效 token不会 401登录接口放行不需要 token。2. 补全异常捕获定位卡死位置修改login.js增加 fail 捕获export function getRuoyiToken() { return new Promise((resolve,reject) { dd.getAuthCode({ success: async (res) { const authCode res.authCode; dd.httpRequest({ url: http://192.168.x.xx:xxxx/dev-xxx/xxx/xxx/login, method: POST, data: { authCode }, success: (loginRes) { const data loginRes.data; if(data.code 200){ dd.setStorageSync(ruoyi_token, data.token); resolve(data.token); }else{ reject(钉钉登录校验失败 data.msg); } }, fail:(err){ reject(请求登录接口网络失败JSON.stringify(err)); } }) }, fail:(err){ // 模拟器一定会进这里拿不到authCode reject(获取钉钉授权码失败JSON.stringify(err)); } }) }) }3. workList.js 增加弹窗打印看阻塞在哪async initLogin(){ dd.showModal({content:开始执行免登流程}); try{ const token await getRuoyiToken(); dd.showModal({content:获取token成功token}); this.setData({token}); this.getWorkData(true); }catch(e){ dd.showModal({content:免登失败原因e}); } }真机打开后会弹窗提示提示「获取钉钉授权码失败」模拟器限制真机可解决提示「钉钉登录校验失败」钉钉 AppKey/AppSecret 配置错误后端校验不通过打印出 token 字符串免登成功后端会收到工单请求。四、工单请求头确认拿到 token 后才会携带workList.js里工单请求 header 是正确的header:{Authorization:Bearer this.data.token}只有免登成功赋值 token 后这个 header 才会带上否则为空访问工单接口直接 401。五、分步操作流程确认后端application-dev.yml已添加address:0.0.0.0服务重启完成开发者工具勾选全部 3 条忽略域名校验编译项目手机连本机同 WiFi点右上角「预览」扫码真机打开观察弹窗提示定位免登失败原因若弹窗打印出 token后端控制台会收到/smz/work/list请求页面加载工单数据。注意浏览器直接访问工单接口没有携带登录 token401 是正常安全拦截不代表地址错误只证明接口鉴权生效真正的问题是小程序没走完登录拿 token 流程。