钉钉小程序接入若依(只做增删改查,先不管工作台免登)

场景:钉钉小程序调用若依后端接口做业务增删改查;后端部署在这台轻量服务器,Nginx 代理/api,阿里云防火墙已经关闭 8080 公网。

网络层面

  1. 钉钉小程序不能直接访问 公网 IP:8080,8080 已经被防火墙封禁。
  2. 小程序请求域名填:http://你的公网IP/api(后续换成域名 HTTPS)
  • 链路:钉钉小程序 → 80 端口 (Nginx) → 127.0.0.1:8080若依后端。
  • 阿里云防火墙只需要开放 80、443,其余后端端口全部对内。

⚠️钉钉小程序生产环境强制要求 HTTPS 域名,裸 IP http 只能开发调试,上线必须域名 + SSL 证书。

两种鉴权方案(钉钉小程序)

方案 A:钉钉小程序 code2session(推荐,钉钉官方)

流程:

  1. 钉钉小程序前端调用 dd.getAuthCode() 获取 authCode
  2. 小程序把 authCode 传给你的若依后端接口
  3. 后端拿appKey + appSecret + authCode调用钉钉 openapi 接口 dingtalk.oapi.miniapp.userinfo.get 获取用户钉钉 userId
  4. 后端拿到钉钉 userId,匹配系统用户,返回 token 给小程序;
  5. 小程序后续所有增删改查请求头部带上 token,走若依原有Authorization鉴权。

这样复用若依完整权限体系(角色、菜单、数据权限),直接做业务增删改查。

方案 B:简单模式(仅内部使用,开发调试)

内部 5 人小程序,小程序请求 header 带上自定义标识,后端拦截器识别钉钉小程序请求,直接绑定固定内部账号 token。不建议上公网对外。

Nginx 关键配置(适配钉钉小程序,和你现有若依 Web 共用一套后端)

复制代码
server {
    listen 80;
    server_name 你的公网IP;

    # 若依web前端页面
    location / {
        root  /www/wwwroot/ruoyi-web;
        index index.html;
        try_files $uri $uri/ /index.html;
    }

    # 【钉钉小程序、web共用后端接口】全部转发本机8080
    location /api/ {
        proxy_pass http://127.0.0.1:8080/;
        proxy_set_header Host $host;
        proxy_set_header X‑Real‑IP $remote_addr;
        proxy_set_header X‑Forwarded‑For $proxy_add_x_forwarded_for;
    }
}

SpringBoot application.yml,tomcat 监听地址写127.0.0.1:8080,不要 0.0.0.0,只允许本机 Nginx 访问后端。

yaml

复制代码
server:
  port: 8080
  address: 127.0.0.1

后端依赖 & 接口要点(若依 springboot)

  1. pom.xml 引入钉钉 SDK(或者直接 http 调用 openapi)

    com.aliyun dingtalk 2.0.25
  2. 配置文件填入钉钉小程序的 ding.app-key、ding.app-secret

  3. 写一个 /api/ding/miniapp/login 接口:接收小程序传过来 authCode,换取钉钉 userId,匹配系统用户,返回若依 token。

  4. 小程序拿到 token,后续所有增删改查请求请求头:Authorization: Bearer xxxxxx,直接复用若依已写好的 controller,不用重写增删改查代码。

钉钉小程序侧 request 请求示例

复制代码
//钉钉小程序 js
dd.request({
  url:"http://你的公网IP/api/ding/miniapp/login",
  method:"POST",
  data:{ authCode: res.authCode },
  success:(res)=>{
      //拿到token,存storage
      dd.setStorageSync('token',res.data.token)
  }
})

//后续业务查询
dd.request({
  url:"http://你的公网IP/api/xxx/list", //若依原有业务接口
  headers:{
    "Authorization":"Bearer "+dd.getStorageSync('token')
  }
})

留意的地方

  1. 不要小程序直接请求 :8080;防火墙已经封死,必须走/api经过 Nginx 代理。
  2. 钉钉小程序开发调试时,开发工具打开【不校验合法域名】;正式发布必须配置 HTTPS 域名。
  3. 小程序调用钉钉 openapi 的authCode一次性,只能使用一次,不能重复调用。
  4. 若依跨域:Nginx 或者后端配置跨域,允许钉钉小程序域名来源。
  5. 数据库用户表,增加字段 ding_user_id,保存钉钉小程序用户 ID,用于账号绑定。

重要提醒(这里是互联网对外服务)

  • 钉钉小程序鉴权不要前端硬编码 appSecret,appSecret 只能保存在后端,绝对不能暴露小程序前端。
  • 所有增删改查全部复用若依的 token、角色权限控制,不要单独写一套无校验接口。
相关推荐
豆角焖肉20 小时前
Apache POI 实现 Excel 上传解析、导出
apache·poi·multipartfile·excel 导入导出·批量导入
nvd112 天前
深入剖析:GCP Pub/Sub 与 Apache Kafka 对消息处理延迟与消费者卡死的处理机制异同
分布式·kafka·apache
白帽攻防录2 天前
SRC 挖洞:Apache APISIX 非规范路径授权绕过深度复盘,CVE-2026-94269 怎么绕过网关访问后端
网络安全·apache·src漏洞挖掘
Knight_AL2 天前
从 EasyExcel 到 Apache Fesod:Java Excel 处理生态的一次重构
java·apache·excel
心易行者4 天前
Agent应用+API端点商业化进阶实战:从单体智能体到可付费调用的API全流程
运维·服务器·人工智能·python·apache
文慧的科技江湖9 天前
2026年10月4日充电桩行业晚报:当“只充80%“成为通行规则,行业开始管单车占桩时长 | 慧知开源充电桩平台
开源·apache·新能源·虚拟电厂·充电桩·ocpp·v2g
nvd1111 天前
# 从 192 秒到 13 秒:Apache Flink 批处理极速调优实战记录
大数据·flink·apache
众链网络12 天前
景区票务系统选型的技术尽调清单:从并发、数据到二次开发的 12 个必查项
apache·景区票务系统
AllData公司负责人13 天前
AllData数据中台物联网实时平台|集成 Apache StreamPipes,MQTT工业物联网数据实时预警实践案例
大数据·数据库·人工智能·物联网·apache·工业物联网·streampipes
白帽攻防录14 天前
SRC 挖洞:Apache Tomcat 加密拦截器绕过深度复盘,CVE-2026-34486 fail-open 一行代码怎么打穿集群通信
java·网络安全·tomcat·apache