企业微信接口返回 40014 错误码表示 access_token 无效或过期,主要出现在调用需要凭证的应用 API 场景。处理重点是重新获取 access_token 并核对企业 ID 与 Secret,注意区分群机器人 Webhook 密钥与 API 访问凭证。
先说结论:40014 错误意味着当前使用的 access_token 已失效,必须通过企业 ID 和 Secret 重新调用接口获取新凭证。
- 先确认:检查调用接口是否需要 access_token,区分 Webhook 密钥与 API 凭证。
- 先处理:使用最新的企业 ID 和 Secret 调用获取 token 接口,更新本地缓存。
- 再验证:使用新 token 发送测试消息,确认返回 errcode 为 0。
命令速用版
可通过 curl 命令快速测试获取新的 access_token,替换命令中的企业 ID 和 Secret 参数。
curl "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=YOUR_CORPID&corpsecret=YOUR_SECRET"返回 JSON 中包含 access_token 字段即为获取成功,若返回 40013 则说明 Secret 无效。
为什么会这样
40014 错误的根本原因是 access_token 过期或生成凭证的企业信息不匹配。企业微信的 access_token 有效期为 7200 秒,超时后必须重新获取,且频繁获取可能触发频率限制。
此外,若修改了企业微信后台的 Secret 或变更了可信 IP 白名单,旧 token 会立即失效。部分开发者误将群机器人 Webhook 密钥当作 access_token 使用,也会因接口鉴权方式不同导致报错。
分步处理
按照以下步骤排查并修复凭证问题,确保 API 调用链路正常。
- 确认接口类型:检查代码调用的是/cgi-bin/message/send(需要 token)还是/cgi-bin/webhook/send(需要 key)。40014 仅出现在需要 token 的接口。
- 重新获取凭证:使用企业 ID 和应用的 Secret 调用 gettoken 接口。确保 Secret 是可见状态,若隐藏需在后台重置。
- 检查 IP 白名单:登录企业微信管理后台,确认调用接口的服务器 IP 已添加至应用可信 IP 列表。
- 更新缓存逻辑:代码中应实现 token 自动刷新机制,避免硬编码固定 token。
怎么验证是否生效
使用新获取的 access_token 调用发送消息接口,观察返回数据包。
curl "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=NEW_TOKEN" -d '{"touser":"UserID","msgtype":"text","agentid":1,"text":{"content":"test"}}'若返回{"errcode":0,"errmsg":"ok"}则修复成功。若仍报 40014,检查 token 复制是否完整,有无多余空格或换行。
常见坑
- Token 缓存过久:本地缓存时间应略小于 7200 秒,建议设置为 7000 秒刷新,避免边界时间失效。
- 多应用混淆:不同应用拥有独立的 Secret 和 token,不可混用自建应用的 token 调用第三方应用接口。
- Secret 泄露重置:若 Secret 曾泄露并重置,旧 token 会永久失效,必须更新代码配置。
- IP 白名单限制:未在后台配置可信 IP 时,部分接口调用会直接失败或 token 无效。
常见问题
群机器人 Webhook 会报 40014 吗?
通常不会,群机器人 Webhook 使用 key 参数鉴权,不涉及 access_token。若报 40014 说明你调用的是应用消息 API 而非 Webhook 接口。
access_token 有效期是多久?
官方文档规定 access_token 有效期为 7200 秒(2 小时),过期后接口会返回 40014 错误。
为什么重新获取 token 后还是报错?
可能是企业 ID 或 Secret 填写错误,或者服务器 IP 不在可信白名单内,请核对管理后台配置。
参考来源
- 企业微信官方文档 - 获取 access_token:https://developer.work.weixin.qq.com/document/path/91039
- 企业微信官方文档 - 全局错误码说明:https://developer.work.weixin.qq.com/document/path/90000