钉钉 API 常见错误排查

高频问题速查

错误码:40017

描述:invalid tmp_auth_code(临时授权码无效)

原因:tmp_auth_code 已过期(5分钟)或已被使用过。

解决:确保每次登录都重新调用 dd.runtime.permission.requestAuthCode 获取新 code。

错误现象:40001 / 40014

描述:invalid access_token

原因:access_token 过期、错误或未正确缓存。

解决:检查 AppKey/AppSecret 是否正确;实现 token 自动刷新机制。

回调验签失败

描述:钉钉回调 URL 校验不通过,返回 “check failed”

原因:签名算法错误、时间戳偏差过大、未正确解密 echostr。

解决:使用官方 SDK 或参考 工具箱 中的验签示例。

JSAPI config invalid signature

描述:前端调用 dd.config 失败,提示签名无效

原因:url 未传当前完整页面地址(含 query,不含 hash);nonceStr 或 timestamp 不一致。

解决:后端签名时使用的 url 必须与前端 location.href.split('#')[0] 一致。

60020:无权限访问接口

原因:应用未申请对应权限点,或调用者不在可见范围内。

解决:登录开发者后台 → 应用详情 → 权限管理,勾选所需权限并发布新版本。

使用苹果手机可以正常访问API,但是安卓不行

原因:是由于你的SSL证书不对。

解决:使用1.2 和1.3版本就可以解决问题,当时这个问题困扰我了一个晚上,后来在NGINX配置上将1.0之类删除,改1.2和1.3版本就正常了。